【发布时间】:2018-06-14 14:35:37
【问题描述】:
我正在尝试将 DDDYYYY varchar 字段转换为日期字段。但是,当我尝试将日期插入日期字段时,我收到以下错误消息:
SQL 错误 ORA-01847: 日期必须介于 1 和最后一天之间 错误
以下是我使用的 DDDYYYY 数据示例:
3562015
下面是我为转换它而编写的代码:
select to_date(to_char(to_date(lpad('3562015', 7, 0), 'DDDYYYY'), 'MM/DD/YYYY'), 'MM/DD/YYYY') as converted_date
from dual;
我做错了什么?提前致谢。
【问题讨论】:
-
DATE值没有格式 - 因此您无需格式化DATE值即可将其插入到DATE列中。一个单一的to_date()电话就足够了 -
我收到一个错误...可能是因为我尝试插入的列是带有时区的时间戳。这些数据类型兼容吗?我以为他们是
-
select和insert都为我工作(Oracle 12.2,nls_date_format = DD-MON-RR,nls_date_language = ENGLISH,nls_timestamp_tz_format = DD-MON-RR HH24.MI.SSXFF TZR)。但正如其他人所提到的,您会从最里面的to_date()表达式中得到一个非常好的date,因此您应该停在那里,而不是将该日期转换为字符串,然后将该字符串转换回日期。 -
可能是因为我尝试插入的列是带有时区的时间戳 - 请发布不起作用的内容。
-
我重置了我的 nls_date_format 并且现在一切似乎都正常......不知道发生了什么。我很抱歉。