Abi*_*ash 30 oracle timestamp date
我试图将时间戳("1985-02-07T00:00:00.000Z")转换为日期,但我在几次不同的尝试中未能成功.
以下是我试过的查询:
select to_date('1985-02-07T00:00:00.000Z', 'YYYY-MM-DDTHH24:MI:SS.fffZ')
from dual;
Run Code Online (Sandbox Code Playgroud)
非常感谢您的建议.
a_h*_*ame 49
to_date
将输入转换为DATE
不支持小数秒的类型.要使用小数秒,您需要使用TIMESTAMP
在使用时创建的类型to_timestamp
pst关于ff3
修饰符的评论也是正确的.
格式掩码中的"常量"值需要用双引号括起来
所以最后的陈述是:
select to_timestamp('1985-02-07T00:00:00.000Z', 'YYYY-MM-DD"T"HH24:MI:SS.ff3"Z"')
from dual;
Run Code Online (Sandbox Code Playgroud)
Rob*_*ijk 10
SQL> select cast(to_timestamp('1985-02-07T00:00:00.000Z', 'yyyy-mm-dd"T"hh24:mi:ss.ff3"Z"') as date)
2 from dual
3 /
CAST(TO_TIMESTAMP('
-------------------
07-02-1985 00:00:00
1 row selected.
Run Code Online (Sandbox Code Playgroud)
需要遵循的一些规则:
MM
需要月份数字,"MM"
需要双 M。FF
, 不是F
或FFF
。您可以使用尾随整数指定位数,例如FF3
。FF3
在这种情况下使用。这有效:
SELECT TO_DATE('1985-02-07T00:00:00', 'YYYY-MM-DD"T"HH24:MI:SS')
FROM dual;
Run Code Online (Sandbox Code Playgroud)
我不知道是否有办法忽略秒的小数部分,TO_DATE()
因此我使用字符串操作函数将它们删除:
SELECT TO_DATE(SUBSTR('1985-02-07T00:00:00.000Z', 1, 19), 'YYYY-MM-DD"T"HH24:MI:SS')
FROM dual;
Run Code Online (Sandbox Code Playgroud)
小智 5
SELECT to_timestamp_tz('2012-08-08T09:06:14.000-07:00','YYYY-MM-DD"T"HH24:MI:SS.FF3TZR')
FROM dual;
External table DDL,
extract_date char(29) DATE_FORMAT timestamp WITH TIMEZONE mask 'YYYY-MM-DD"T"HH24:MI:SS.FF3TZR'
Run Code Online (Sandbox Code Playgroud)