TO_DATE识别日期

dwj*_*wjv 0 oracle date

好的,我有这个日期字符串:

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#

Ale*_*ole 5

如果您需要将表示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)