我正在使用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