sql >> Databasteknik >  >> RDS >> Oracle

Konvertera TimeStamp i TZ-strängformat till TimeStamp i Oracle

Förmodligen förvirrar de fasta T och Z dig lite, eftersom de inte är normala formatmodell för datum och tid element. Men dokumentationen säger:

Så du omger T och Z med dubbla citattecken, som "T" och "Z" , i din formatmodell.

Om du inte är intresserad av tidszonen kan du använda den to_timestamp() funktion :

to_timestamp('2015-03-24T07:08:24.000Z', 'YYYY-MM-DD"T"HH24:MI:SS.FF3"Z"')

Eller om du vill ha med tidszonen kan du använda den to_timestamp_tz() funktion , som som standard kommer att vara din nuvarande sessionstidszon (eftersom du faktiskt inte anger någon här, tolkas Z inte som Zulu/UTC):

to_timestamp_tz('2015-03-24T07:08:24.000Z', 'YYYY-MM-DD"T"HH24:MI:SS.FF3"Z"')

Om du vill ha det med en tidszon och vill ange att det är UTC kan du tvinga fram det med den from_tz() funktion :

from_tz(to_timestamp('2015-03-24T07:08:24.000Z', 'YYYY-MM-DD"T"HH24:MI:SS.FF3"Z"')), 'UTC')

För att se skillnaden som de producerar, ange en tidszon för sessionen som en demo:

alter session set time_zone = 'America/New_York';

select to_timestamp('2015-03-24T07:08:24.000Z', 'YYYY-MM-DD"T"HH24:MI:SS.FF3"Z"') as no_tz,
  to_timestamp_tz('2015-03-24T07:08:24.000Z', 'YYYY-MM-DD"T"HH24:MI:SS.FF3"Z"') as default_tz,
  from_tz(to_timestamp('2015-03-24T07:08:24.000Z', 'YYYY-MM-DD"T"HH24:MI:SS.FF3"Z"'), 'UTC') as utc_tz
from dual;

NO_TZ
--------------------------------------------------
DEFAULT_TZ
--------------------------------------------------
UTC_TZ
--------------------------------------------------
24-MAR-15 07.08.24.000000000                       
24-MAR-15 07.08.24.000000000 AMERICA/NEW_YORK      
24-MAR-15 07.08.24.000000000 UTC                  

Jag antar att Z är fast och att värdena du får representerar därför alltid UTC; om du faktiskt får olika tidszoner i de värden du behöver konvertera så måste du extrahera och tillämpa dem - vilket är genomförbart, men svårt och inte värt att gå in på om du inte faktiskt har den situationen.




  1. Använd MySQL-konsolen genom ett PowerShell-skript

  2. Vad betyder PÅ [PRIMÄR]?

  3. MySQL:Mycket långsam uppdatering/infoga/ta bort frågor som hänger på frågeslutsteget

  4. Hur fungerar alter table switch på sql server?