SAL In_Words --------- ----------------------------------------------------- 800 eight hundred 1600 one thousand six hundred 1250 one thousand two hundred fifty
select sal,to_char(to_date(sal,'j'),'Jsp') in_words from emp
to_date在这做什么?有人对这个查询有任何想法吗?
解决方法
select to_char(to_date(:number,'jsp') from dual;
如果你查看查询的最内部部分to_date(:number,’j’),’j’或J是朱利安日期(公元前4713年1月1日),基本上这个日期用于天文研究.
所以to_date(:number,’j’)它取数字所代表的数字并假装它是朱利安日期,转换成日期.
如果您将3传递给数字,那么它将日期转换为公元前4713年1月3日,这意味着将3添加到Julian日期.
select to_char(to_date(3,'jsp') from dual;
现在to_char(to_date(3,’jsp’),jsp = Now;取该日期(to_date(3,’j’))并拼写它代表的朱利安数字,输出为:
TO_CH ----- three
使用Julian日期时有一个限制,它的范围是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年提出朱利安日数的问题,那就是“Joseph Scaliger”:
http://en.wikipedia.org/wiki/Joseph_Justus_Scaliger
我不会继续重复这些网站中的另一位作者所做的事情,这就是为什么我只是发布了你可以访问它们的链接,并阅读了你需要了解如何查询这样的查询的原因:
SELECT TO_CHAR (TO_DATE (2447834,'jsp') FROM DUAL;
//输出:两百四十四万七千八百三十四