如何从表中现有的选择查询中获取Oracle数据库中的不同日期格式



在我的Oracle数据库中,我有一个名为HIGH_DATE的日期字段。一些条目的格式是";2012年9月27日";(DD-MON-YY(,并且对于一些条目;27-09-12";(DD-MM-YY(。

有人能帮我构建一个选择查询吗?通过该查询,我可以获得任何一种格式的日期??

如果您有一个DATE列,那么它没有任何格式;它在内部存储为7字节(世纪、世纪年、月、日、小时、分钟、秒(,只有当用于访问数据库的用户界面将数据返回给用户时,它才会被格式化(所有日期都将隐式转换为具有一致格式的字符串(。

我假设当你说:

我有一个名为";高_日期";

你的实际意思是:;我有一个具有VARCHAR2数据类型的列,其中我存储日期值";。

如果是这样的话,那么你所需要做的就是:

SELECT TO_DATE( high_date, 'DD-MM-RR' ) AS high_date
FROM   table_name;

如果您使用MM格式模型,而没有使用FX格式模型指定完全匹配,则Oracle的字符串到日期转换规则将额外匹配MON格式模型。

如果你有测试数据:

CREATE TABLE table_name ( high_date ) AS
SELECT '23-09-20' FROM DUAL UNION ALL
SELECT '15-AUG-99' FROM DUAL;

然后上述查询将输出(取决于您的NLS_DATE_FORMAT(:

|HIGH_DATE||:------------------||2020-09-23 00:00:00||1999-08-15T00:00:00|

db<gt;小提琴这里

然而,最好的解决方案是停止将值存储为字符串,并将它们(没有格式(存储为日期。

最新更新