我正在使用Oracle 10g数据库中的一些数据,特别是批量更新和读取时间戳记信息。由于业务需求,我必须将MM/DD/YYYY HH24:MI:SS
格式转换为YYYY-MM-DD HH24:MI:SS
格式。另外,由于业务需求,时间戳存储为VARCHAR
而不是本机日期时间。在Oracle 10g中查找错误的日期时间标记
不幸的是,现在我遇到了麻烦在我的数据上运行选择操作。
具体而言,当我运行下面的选择,我收到ORA-01861:那不好的说法是TO_DATE(datetime_stamp,“YYYY-MM-DD HH24
SELECT datetime_stamp
from entrytable
where
to_date(datetime_stamp, 'YYYY-MM-DD HH24:MI:SS')
between
TO_DATE('11/27/2011 00:00:00', 'MM/DD/YYYY HH24:MI:SS')
and
TO_DATE('12/06/2011 23:59:59', 'MM/DD/YYYY HH24:MI:SS')
and rownum < 1000
我证实:文字不匹配格式字符串:MI:SS'),但是现在我有400k行数据要解析,试图找到坏行。
有什么办法可以让Oracle返回产生ORA-01861错误的行吗?
我试过使用REGEXP_LIKE来查找不适合的数据[0-9] [0-9] [0-9] [0-9] - [0-9] [0-9] - [ 0-9] [0-9] [0-9] [0-9]:[0-9] [0-9]:[0-9] [0-9],但所有行似乎都适合那个常规表达。
下面的函数应该这样做。但是,在时间戳/日期数据类型中存储时间戳/日期会更好。它会为你省去这个麻烦。 – Ben
希望我能奔...希望我能。 – Gyrfalcon2138