那么查询是如何工作的呢?这就是为什么:
select to_char(to_date(:number,'j'),'jsp') from dual;
如果你查看查询 to_date(:number,'j') 的最里面部分,'j' 或 J 是儒略日期(公元前 4713 年 1 月 1 日),基本上这个日期被用于天文研究。
所以 to_date(:number,'j') 它取数字代表的数字,假装它是儒略日期,转换成日期。
如果将 3 传递给数字,那么它将日期转换为 4713 年 1 月 3 日 BC,这意味着 3 被添加到儒略日期。
select to_char(to_date(3,'j'),'jsp') from dual;
现在 to_char(to_date(3,'j'),'jsp'), jsp = Now; 取那个 date(to_date(3,'j')) 并拼出它所代表的儒略数,输出是:
TO_CH
-----
three
使用儒略日期有一个限制,它的范围从 1 到 5373484。这就是为什么如果你把值放在 5373484 之后,它会抛出一个错误,如下所示:
ORA-01854: julian date must be between 1 and 5373484
大家好,这个话题很有趣。我记得当我在 2005 年学习 Oracle 时,一位讲师要求我编写一个 PL/SQL 代码来将数字转换为文字,这是整整两页的代码。
这里有一些参考资料可以帮助我们理解儒略日,这就是我们在这个操作中使用字母“j”或“J”的原因。
首先有一个网站有关于“如何使用 Oracle SQL 查询将数字转换为单词”的示例和说明:
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;
//输出:244.7834万