oracle数据库如何将连续数字转换为日期

问题描述 投票:0回答:1

以下查询输出日期中的连续数字,在本例中为数字 2415021:

SELECT
  TO_NUMBER(TO_CHAR(TO_DATE('01.01.2101', 'DD.MM.YYYY'), 'j'))
FROM DUAL

如何将其转换回所需格式的日期?我找不到任何相关内容。

我已经尝试了 to_date 的不同变体,但没有运行。

请注意,我想要转换为“2023/01/01”的不是像 20230101 这样的数字 它是一个连续的数字。

oracle sqlplus
1个回答
0
投票

'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日

小提琴

但不要存储或传递格式化为字符串的日期,将它们存储/用作日期,并且仅格式化它们以供最终显示。

© www.soinside.com 2019 - 2024. All rights reserved.