Итак, как работает запрос? Ну вот почему:
select to_char(to_date(:number,'j'),'jsp') from dual;
Если вы заглянете во внутреннюю часть запроса to_date(:number,'j'), то «j» или J — это юлианская дата (1 января 4713 г. до н.э.), в основном эта дата использовалась для астрономических исследований.
Таким образом, to_date(:number,'j') берет число, представленное числом, и делает вид, что это юлианская дата, конвертирует в дату.
Если вы передадите 3 в число, оно преобразует дату в 3 января 4713 г. до н.э., это означает, что 3 добавляется к дате по юлианскому календарю.
select to_char(to_date(3,'j'),'jsp') from dual;
Теперь to_char(to_date(3,'j'),'jsp'), jsp = Now; возьмите эту дату (to_date (3, 'j')) и запишите юлианское число, которое она представляет, результат:
TO_CH
-----
three
Существует ограничение при использовании дат по юлианскому календарю, оно варьируется от 1 до 5373484. Вот почему, если вы поместите значения после 5373484, вы получите ошибку, как показано ниже:
ORA-01854: julian date must be between 1 and 5373484
Привет всем, интересна эта тема. Я помню, когда я изучал Oracle в 2005 году, один из инструкторов потребовал, чтобы я написал код PL/SQL для преобразования чисел в слова, для этого потребовалось целых две страницы кода.
Вот некоторая ссылка, которая может помочь нам понять юлианский день, поэтому мы используем букву «j» или «J» во время этой операции.
Во-первых, есть веб-сайт, на котором есть пример и объяснение «Как преобразовать число в слова с помощью Oracle SQL Query»:
http://viralpatel.net/blogs/convert-number-into-words-oracle-sql-query/
Во-вторых, если вы хотите узнать больше о «Юлианском дне», перейдите по ссылке:
http://en.wikipedia.org/wiki/Julian_day
В-третьих, если вы хотите узнать больше о том, кто предложил число дней по юлианскому календарю в 1583 году, это был «Иосиф Скалигер»:
http://en.wikipedia.org/wiki/Joseph_Justus_Scaliger
Для меня нет смысла продолжать повторять то, что сделал другой автор на этих веб-сайтах, поэтому я просто разместил ссылку, по которой вы можете получить к ним доступ и прочитать то, что вам нужно, чтобы понять, как работает такой запрос:
SELECT TO_CHAR (TO_DATE (2447834, 'j'), 'jsp') FROM DUAL;
//Вывод: два миллиона четыреста сорок семь тысяч восемьсот тридцать четыре
person
S. Mayol
schedule
13.03.2015
to_date(sal,'j')
возвращает09-FEB-08
для1500
. Но, как говорится в этом посте, это добавитJanuary 1, 4713 BC
. Теперь, что это значит ?? - person Ravi   schedule 20.04.2013