2017-12-18 317 views

回答

3

时间格式为24小时,因此修复方法是使用HH24而不是HH

SELECT CAST(TO_TIMESTAMP_TZ(
    REPLACE('1970-01-01T00:00:00-08:00', 'T', ''), 
    'YYYY-MM-DD HH24:MI:SS TZH:TZM') AS DATE) DOB 
FROM dual; 

,但使用的替换,可以在模式中使用文字"T"

SELECT CAST(
    TO_TIMESTAMP_TZ('1970-01-01T00:00:00-08:00', 
     'YYYY-MM-DD"T"HH24:MI:SS TZH:TZM') 
    AS DATE) DOB FROM dual; 

被告知,中投只是下降的时区信息。如果您需要将时间戳转换为日期在特定的时区(比如+04:00),使用at time zone子句TIMESTAMP WITH TIME ZONE

SELECT CAST(
    TO_TIMESTAMP_TZ('1970-01-01T00:00:00-08:00', 
     'YYYY-MM-DD"T"HH24:MI:SS TZH:TZM') 
    at time zone '+04:00' AS DATE) DOB FROM dual; 

多见于:


由于您希望以格式MM/DD/YYYY输出,请直接在时间戳上使用to_char:

SELECT to_char(
    TO_TIMESTAMP_TZ('1970-01-01T00:00:00-08:00', 
     'YYYY-MM-DD"T"HH24:MI:SS TZH:TZM') 
    at time zone '+04:00', 'MM/DD/YYYY') DOB FROM dual; 
相关问题