如何解决如何从表中存在的选择查询中获取不同的日期格式?
在我的Oracle数据库中,我有一个名为HIGH_DATE
的日期字段。某些条目的格式为“ 27-SEP-12”(DD-MON-YY
),而某些条目的格式为“ 27-09-12”(DD-MM-YY
)。
有人可以帮助我建立一个选择查询,通过它我可以获取两种格式的日期吗?
解决方法
如果您有DATE
列,则它没有任何格式;它是stored internally as 7-bytes(世纪,世纪百年,月,日,小时,分钟,秒),并且仅当用于访问数据库的用户界面将数据返回给用户时,才对其进行格式化(所有日期都将隐式转换为格式一致的字符串)。
我会假设您说的是:
我有一个名为“ HIGH_DATE”的日期字段
您真正的意思是:“我有一列数据类型为VARCHAR2
的列,用于存储日期值”。
如果是这种情况,那么您要做的就是:
SELECT TO_DATE( high_date,'DD-MM-RR' ) AS high_date
FROM table_name;
如果您使用MON
格式模型并且未使用MM
格式模型指定完全匹配,则Oracle的string-to-date conversion rules将另外匹配FX
格式模型。
如果您有测试数据:
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-23T00:00:00 | | 1999-08-15T00:00:00 |
db 提琴here
但是,最好的解决方案是停止将值存储为字符串,并将它们(无格式)存储为日期。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。