好的,我有这个日期字符串:
2016-05-31T23:00:00.000Z
Run Code Online (Sandbox Code Playgroud)
例如,我希望能够使用它来搜索Oracle 12c表中的日期
SELECT stuff
FROM TABLE
WHERE date_column > TO_DATE('2016-05-31T23:00:00.000Z', 'what goes here?');
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚这个日期的格式,任何人都可以帮忙吗?这可能很简单,但我似乎无法找到它......
编辑:这不是C#
如果您需要将表示UTC的字符串转换为您当地的时区,那么您需要执行几个步骤.起点是使用to_timestamp()T和Z的字符文字,Oracle无法识别:
select to_timestamp('2016-05-31T23:00:00.000Z', 'YYYY-MM-DD"T"HH24:MI:SS.FF3"Z"')
from dual;
TO_TIMESTAMP('2016-05-31T23:00:00.000Z','YYYY-MM-DD"T"HH24:MI:SS.FF3"Z"')
-------------------------------------------------------------------------
2016-05-31 23:00:00.000
Run Code Online (Sandbox Code Playgroud)
然后你可以说明,timezone-less值实际上是UTC from_tz():
select from_tz(
to_timestamp('2016-05-31T23:00:00.000Z', 'YYYY-MM-DD"T"HH24:MI:SS.FF3"Z"'),
'UTC')
from dual;
FROM_TZ(TO_TIMESTAMP('2016-05-31T23:00:00.000Z','YYYY-MM-DD"T"HH24:MI:SS.FF3"Z"'
--------------------------------------------------------------------------------
2016-05-31 23:00:00.000 UTC
Run Code Online (Sandbox Code Playgroud)
然后你可以将它转换为你自己的时区:
select from_tz(
to_timestamp('2016-05-31T23:00:00.000Z', 'YYYY-MM-DD"T"HH24:MI:SS.FF3"Z"'),
'UTC') at time zone 'Europe/London'
from dual;
FROM_TZ(TO_TIMESTAMP('2016-05-31T23:00:00.000Z','YYYY-MM-DD"T"HH24:MI:SS.FF3"Z"'
--------------------------------------------------------------------------------
2016-06-01 00:00:00.000 EUROPE/LONDON
Run Code Online (Sandbox Code Playgroud)
如果你想将它作为日期数据类型返回,你可以将其强制转换:
select cast(from_tz(
to_timestamp('2016-05-31T23:00:00.000Z', 'YYYY-MM-DD"T"HH24:MI:SS.FF3"Z"'),
'UTC') at time zone 'Europe/London' as date)
from dual;
CAST(FROM_TZ(TO_TIMESTAMP('2016-05-31T23:00:00.000Z','YYYY-MM-DD"T"HH24:MI:SS.FF
--------------------------------------------------------------------------------
2016-06-01 00:00:00
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
300 次 |
| 最近记录: |