Phi*_*ord 14 sql oracle datetime-format
我有一个日期/时间值的字段,如下所示:
2009-11-17 18:40:05
Run Code Online (Sandbox Code Playgroud)
它是UTC.在查询中如何将其转换为EST?
我正在尝试这样的东西,但它会引发错误.
// datetime is the field name
SELECT
FROM_TZ(TIMESTAMP TO_DATE(datetime, 'yyyy-mm-dd hh24miss'), 'EST') AS DT
FROM
db_name
Run Code Online (Sandbox Code Playgroud)
Dan*_*Dan 16
我不得不稍微调整它以使其在我的数据库上工作,但这工作:
select from_tz(to_timestamp('2009-11-17 18:40:05','yyyy-mm-dd hh24:mi:ss'), 'UTC')
at time zone 'America/New_York' from dual
Run Code Online (Sandbox Code Playgroud)
关键是"at time zone"语法.
如果要将日期字段从 UTC 转换为 EST,这对我有用:
CAST(FROM_TZ(CAST(DATE_FIELD AS TIMESTAMP), 'UTC')
at time zone 'America/New_York' AS Date) as DESIRED_FIELD_NAME
Run Code Online (Sandbox Code Playgroud)
首先,我将所需的日期字段(如 DATE_FIELD)转换为时间戳。强制转换的结果是 FROM_TZ 函数的第一个参数,它要求参数的类型为 TIMESTAMP。第二个参数是“UTC”,因为这是我们要改变的。
然后,我将该函数调用的结果强制转换回 DATE 类型并给它一个别名。