下面的查询输出一个日期的连续数字,例如数字2415021:
SELECT TO_NUMBER(TO_CHAR(TO_DATE('01.01.2101', 'DD.MM.YYYY'), 'j')) FROM DUAL
字符串我怎么能把它转换回一个日期与所需的格式?我找不到任何这.我已经尝试了不同的变化fo_date,但没有运行。请注意,这不是一个数字,如2023/01/01,我想转换为'2023/01/01',这是一个连续的数字。
sg3maiej1#
'j'日期格式元素是:儒略日;自公元前4712年1月1日起的天数。用J指定的数字必须是整数。您可以转换回具有相同元素的日期:
'j'
SELECT TO_DATE(TO_CHAR(2488435), 'j') FROM DUAL
字符串| TO_DATE(TO_CHAR(2488435),'J ')|| --|| 2001年1月1日|这给了你一个数据类型为DATE的值。它有一个内部的二进制表示,没有任何固有的人类可读格式。你的客户端通常决定如何显示内部表示,通常使用NLS设置,例如:
alter session set nls_date_format = 'YYYY-MM-DD HH24:MI:SS'
的数据| TO_DATE(TO_CHAR(2488435),'J ')|| --|| 2019 -01-01 00:00:00|如果你想要一个特定格式的 string 值,那么显式地转换它:
SELECT TO_CHAR(TO_DATE(TO_CHAR(2488435), 'j'), 'DD.MM.YYYY') FROM DUAL
型| TO_CHAR(TO_DATE(TO_CHAR(2488435),'J '),'DD.MM. YYYY')|| --|| 01.01.2101|或者对于与代码中的日期不匹配的示例编号:
SELECT TO_CHAR(TO_DATE(TO_CHAR(2415021), 'j'), 'DD.MM.YYYY') FROM DUAL
型| TO_CHAR(TO_DATE(TO_CHAR(2415021),'J '),'DD.MM. YYYY')|| --|| 1900年1月1日|fiddle但是不要存储或传递格式化为字符串或数字的日期;将它们存储和使用为日期,并且仅在需要字符串的情况下将其格式化为最终显示或外部调用(例如,在JSON API调用中以ISO格式进行格式化等)。
1条答案
按热度按时间sg3maiej1#
'j'
日期格式元素是:儒略日;自公元前4712年1月1日起的天数。用J指定的数字必须是整数。
您可以转换回具有相同元素的日期:
字符串
| TO_DATE(TO_CHAR(2488435),'J ')|
| --|
| 2001年1月1日|
这给了你一个数据类型为DATE的值。它有一个内部的二进制表示,没有任何固有的人类可读格式。你的客户端通常决定如何显示内部表示,通常使用NLS设置,例如:
的数据
| TO_DATE(TO_CHAR(2488435),'J ')|
| --|
| 2019 -01-01 00:00:00|
如果你想要一个特定格式的 string 值,那么显式地转换它:
型
| TO_CHAR(TO_DATE(TO_CHAR(2488435),'J '),'DD.MM. YYYY')|
| --|
| 01.01.2101|
或者对于与代码中的日期不匹配的示例编号:
型
| TO_CHAR(TO_DATE(TO_CHAR(2415021),'J '),'DD.MM. YYYY')|
| --|
| 1900年1月1日|
fiddle
但是不要存储或传递格式化为字符串或数字的日期;将它们存储和使用为日期,并且仅在需要字符串的情况下将其格式化为最终显示或外部调用(例如,在JSON API调用中以ISO格式进行格式化等)。