我有一个有两列的表:
M_OP_DATE
DATE
M__DT_UTC_DATE
TIMESTAMP(3)
).
+---------------------+---------------------+
| M_OP_DATE | M__DT_UTC_DATE |
+---------------------+---------------------+
| 2018-09-03 00:00:00 | 2018-09-25 20:14:57 |
| 2018-08-31 00:00:00 | 2018-09-25 20:15:05 |
| 2018-08-31 00:00:00 | 2018-09-25 20:15:05 |
+---------------------+---------------------+
我想把日期从
操作日期
,不碰时间,在田野里
UTC日期
我搜索了这么多,找到了这个答案,这看起来和我需要做的差不多:
already answered question
.
因此,我根据我的数据调整了这个答案,并得出如下结论:
update FXKAUD_H_DBF set M__DT_UTC_DATE = to_date(substr(M_OP_DATE, 0, 9) || ' ' || to_char(M__DT_UTC_DATE, 'HH24:MI:SS'), 'YYYY-MM-DD HH24:MI:SS')
然而,结果并不是预期的结果:
+---------------------+---------------------+
| M_OP_DATE | M__DT_UTC_DATE |
+---------------------+---------------------+
| 2018-08-29 00:00:00 | 2029-08-18 14:47:07 |
+---------------------+---------------------+
如你所见,今年是
2029
今天是
18
. 它基本上把一天的两位数和一年的最后两位数互换了。
当我试着选择里面的东西
substr(M_OP_DATE, 0, 9)
select substr(M_OP_DATE, 0, 9) from FXKAUD_H_DBF
+-----------------------+
| SUBSTR(M_OP_DATE,0,9) |
+-----------------------+
| 29-AUG-18 |
+-----------------------+
... 当我尝试格式化这个字符串的时候
YYYY-MM-DD
问题出现了:
select to_date(substr(M_OP_DATE, 0, 9), 'YYYY-MM-DD') from FXKAUD_H_DBF
| TO_DATE(SUBSTR(M_OP_DATE,0,9),'YYYY-MM-DD') |
+---------------------------------------------+
| 0029-08-18 00:00:00 |
+---------------------------------------------+
有谁能指导我走这条好路吗?
很抱歉没有提供SQLfiddle,但是我的网站已经关闭了(我稍后会检查是否可以将它添加到问题中)。