Oracle:减去TIMESTAMP(6)列的小时数并显示毫秒

时间:2018-08-10 16:32:13

标签: oracle

我想选择一个以毫秒为单位的TIMESTAMP(6),但同时我需要从该TIMESTAMP中减去3小时(每天0.125天)以将其转换为我的时区。所以我尝试了:

SELECT To_Char(UTCSCANTIME-0.125,'YYYY-MM-DD HH24:MI:SS') AS LOCALSCANTIME
Outcome: 2018-08-01 19:22:39

如果我附加“ FF” 以显示毫秒:

SELECT To_Char(UTCSCANTIME-0.125,'YYYY-MM-DD HH24:MI:SS.FF') AS LOCALSCANTIME
Outcome: ORA-01821: date format not recognized

但是,如果我保留“ FF” ,但我不减去0.125:

SELECT To_Char(UTCSCANTIME,'YYYY-MM-DD HH24:MI:SS.FF') AS LOCALSCANTIME
Outcome: 2018-08-01 22:22:39.259000

我怎样才能做到这两点?

谢谢!

1 个答案:

答案 0 :(得分:1)

减去3小时的INTERVAL而不是0.125。

SELECT To_Char(UTCSCANTIME-INTERVAL '3' HOUR,'YYYY-MM-DD HH24:MI:SS.FF') AS LOCALSCANTIME

减去一个数字,例如0.125,会将结果隐式转换为DATE,从而损失了小数秒。

另外,请注意,在Oracle中,转换时区比添加和减去间隔更好。