Sql 无法识别Ora-01821日期格式
我想将字符串更改为日期字段,但在执行以下查询时收到错误ora-01821 date format not RECORGED。我还需要数据库中的am/pm。如何实现这一点Sql 无法识别Ora-01821日期格式,sql,oracle,date,to-date,Sql,Oracle,Date,To Date,我想将字符串更改为日期字段,但在执行以下查询时收到错误ora-01821 date format not RECORGED。我还需要数据库中的am/pm。如何实现这一点 update bucket set closed = to_date(closed_on,'dd-mon-yy hh.mi.ss.ff a.m') 关闭的值将类似于19年5月29日09.01.16.00000000 PM我想您要使用时间戳-日期无法存储毫秒,因此它不理解FF select to_timestamp('29-M
update bucket set closed = to_date(closed_on,'dd-mon-yy hh.mi.ss.ff a.m')
关闭的值将类似于19年5月29日09.01.16.00000000 PM我想您要使用时间戳-日期无法存储毫秒,因此它不理解FF
select to_timestamp('29-MAY-19 09.01.16.00000000 PM','dd-mon-yy hh.mi.ss.FF8 AM') from dual
请注意,正如GMB所指出的,您无法让oracle解析a.m
——您必须将其设置为a.m.
或am
。没有半途而废:)(希望这是一个复制错误)
如果您非常想使用to_DATE,请缩短毫秒数:
select
to_date(
SUBSTR('29-MAY-19 09.01.16.00000000 PM', 1, 18) || SUBSTR('29-MAY-19 09.01.16.00000000 PM', -2, 2),
'dd-mon-yy hh.mi.ssAM'
)
from dual
如果您的时间序列是a.m.
让第二个子序列使用,-4,4)
-“从右开始,左4处,然后取4个字符”
如果毫秒总是00000000,你可以用一个
替换(timeStr,.00000000','')
来整理它,而不是我想你想用时间戳-日期不能存储你的毫秒,所以它不理解FF
select to_timestamp('29-MAY-19 09.01.16.00000000 PM','dd-mon-yy hh.mi.ss.FF8 AM') from dual
请注意,正如GMB所指出的,您无法让oracle解析a.m
——您必须将其设置为a.m.
或am
。没有半途而废:)(希望这是一个复制错误)
如果您非常想使用to_DATE,请缩短毫秒数:
select
to_date(
SUBSTR('29-MAY-19 09.01.16.00000000 PM', 1, 18) || SUBSTR('29-MAY-19 09.01.16.00000000 PM', -2, 2),
'dd-mon-yy hh.mi.ssAM'
)
from dual
如果您的时间序列是a.m.
让第二个子序列使用,-4,4)
-“从右开始,左4处,然后取4个字符”
如果毫秒始终为00000000,则可以使用替换(timeStr,.00000000,'')
来整理此问题,而不使用数据类型DATE。因此,如果表的closed_on列的类型为Date,则它将不起作用。
Caius Jard建议了好的替代解决方案。分数秒(FF)与数据类型日期无关。因此,如果表的closed_on列的类型为Date,则它将不起作用。
Caius Jard已经提出了很好的替代解决方案。另一个选择是使用
#
跳过字符,如下所示:
SQL> SELECT
2 TO_DATE('29-MAY-19 09.01.16.00000000 PM', 'DD-MON-YYYY HH.MI.SS.######## AM')
3 FROM
4 DUAL;
TO_DATE('29-MAY-1909.01
-----------------------
29-MAY-0019 09.01.16 PM
SQL>
#
的数量应该是要跳过的字符数 另一个选项是使用#
跳过字符,如下所示:
SQL> SELECT
2 TO_DATE('29-MAY-19 09.01.16.00000000 PM', 'DD-MON-YYYY HH.MI.SS.######## AM')
3 FROM
4 DUAL;
TO_DATE('29-MAY-1909.01
-----------------------
29-MAY-0019 09.01.16 PM
SQL>
#
的数量应该是要跳过的字符数