我的日期是19年,但实际上是0019年,而不是2009年。订单日期是一个日期字段。
所以当我这么做的时候
select ORDER_DATE, TO_CHAR(ORDER_DATE,'YYYY/MM/DD') from table abc
我得到:
30-JUN-19 0019/06/30
30-APR-19 0019/04/30
31-DEC-21 2021/12/31
23-JAN-19 2019/01/23
有办法把0019年改为2019年吗?
我试过:
SELECT case when extract(year from ORDER_DATE) = 19
then add_months (ORDER_DATE,24000)
else ORDER_DATE
end as fixed_date
from abc
但不确定这是不是最好的办法。
谢谢
3条答案
按热度按时间fdx2calv1#
你可以试试。
rqdpfwrv2#
看来你2019年的约会是错的。您应该真正调查是什么导致这些坏数据进入您的数据库并加以修复。
您在查询中动态更改日期的方法适用于2019年。我建议您更进一步,实际修复您的数据,这样以后就不必担心了(假设您找到并修复了错误值的原因)。这是一种通用方法,在第100年之前的任何日期加上2000年:
您可能需要根据实际问题调整边界。
5fjcxozz3#
要查询更正日期:
要修复数据:
这将处理除0019以外的年份,并保留任何时间组件。