Oracle
 sql >> база данни >  >> RDS >> Oracle

Преобразувайте TimeStamp във формат на низ TZ в TimeStamp в Oracle

Вероятно фиксираните T и Z малко ви объркват, тъй като не са нормални модел на формат за дата и час елементи. Но документацията казва:

Така че ограждате T и Z в двойни кавички, като "T" и "Z" , във вашия модел на формат.

Ако не се интересувате от часовата зона, можете да използвате to_timestamp() функция :

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

Или ако искате да имате с часовата зона, можете да използвате to_timestamp_tz() функция , който по подразбиране ще бъде часовата зона на текущата ви сесия (тъй като всъщност не посочвате такава тук, Z не се интерпретира като зулу/UTC):

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

Ако го искате с часова зона и искате да посочите, че е UTC, можете да го принудите с from_tz() функция :

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

За да видите разликата, която те произвеждат, като посочите часова зона за сесията като демонстрация:

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                  

Предполагам, че Z е фиксирано и следователно стойностите, които получавате, винаги представляват UTC; ако действително получите различни часови зони в стойностите, които трябва да преобразувате, тогава ще трябва да извлечете и приложите тези - което е изпълнимо, но трудно и не си струва да навлизате в него, освен ако наистина не сте в тази ситуация.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. sql oracle - премахване на дублиращата се стойност

  2. JOINs с условие в HQL заявка?

  3. Съхранената процедура в Oracle дава грешка PLS-00428

  4. ЗАДАВА FMTONLY ON в заявки на Oracle

  5. Настройки на времето за изчакване на връзката за Oracle база данни