sql >> Database >  >> RDS >> Oracle

Converteer TimeStamp in TZ-tekenreeksformaat naar TimeStamp in Oracle

Vermoedelijk verwarren de vaste T en Z je een beetje, omdat ze niet normaal zijn datum/tijd-formaatmodel elementen. Maar de documentatie zegt:

Dus je zet de T en Z tussen dubbele aanhalingstekens, als "T" en "Z" , in uw formaatmodel.

Als je niet geïnteresseerd bent in de tijdzone, kun je de to_timestamp() functie :

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

Of als je de tijdzone wilt hebben, kun je de to_timestamp_tz() functie , die standaard wordt ingesteld op de tijdzone van uw huidige sessie (aangezien u er hier geen specificeert, wordt de Z niet geïnterpreteerd als Zulu/UTC):

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

Als je het met een tijdzone wilt en wilt specificeren dat het UTC is, kun je dat forceren met de from_tz() functie :

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

Om het verschil te zien dat deze produceren, specificeert u een tijdzone voor de sessie als 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                  

Ik neem aan dat de Z vast is en dat de waarden die u krijgt daarom altijd UTC vertegenwoordigen; als je echt verschillende tijdzones krijgt in de waarden die je moet converteren, dan moet je die extraheren en toepassen - wat haalbaar is, maar moeilijk, en niet de moeite waard om in te gaan, tenzij je die situatie echt hebt.




  1. Wat betekent Importfout:Symbool niet gevonden:_PQencryptPasswordConn en hoe los ik dit op?

  2. Zijn database-triggers veilig voor integriteitsbeperkingen voor kruistabellen?

  3. Hulp nodig bij het begrijpen van het gedrag van SELECT ... FOR UPDATE waardoor een impasse ontstaat

  4. MySQL - Selecteer de laatst ingevoegde rij op de gemakkelijkste manier