以下查询输出日期中的连续数字,在本例中为数字 2415021:
SELECT
TO_NUMBER(TO_CHAR(TO_DATE('01.01.2101', 'DD.MM.YYYY'), 'j'))
FROM DUAL
如何将其转换回所需格式的日期?我找不到任何相关内容。
我已经尝试了 to_date 的不同变体,但没有运行。
请注意,我想要转换为“2023/01/01”的不是像 20230101 这样的数字 它是一个连续的数字。
'j'
日期格式元素是:
儒略日;自 BC 4712 年 1 月 1 日起的天数。 J 指定的数字必须是整数。
您可以使用相同的元素转换回日期:
SELECT
TO_DATE(TO_CHAR(2488435), 'j')
FROM DUAL
TO_DATE(TO_CHAR(2488435),'J') |
---|
01-JAN-01 |
这将为您提供一个 DATE 数据类型的值。它具有内部二进制表示形式,并且没有任何固有的人类可读格式。您的客户通常决定如何显示内部表示,通常使用 NLS 设置,例如:
alter session set nls_date_format = 'YYYY-MM-DD HH24:MI:SS'
SELECT
TO_DATE(TO_CHAR(2488435), 'j')
FROM DUAL
TO_DATE(TO_CHAR(2488435),'J') |
---|
2101-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') |
---|
2101年1月1日 |
但不要存储或传递格式化为字符串的日期,将它们存储/用作日期,并且仅格式化它们以供最终显示。