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

Oracle SQL израз на заявка и условия с времеви отпечатъци и ISO дати

Въз основа на предишен въпрос , е изкушаващо да се третират както T, така и Z като символни литерали и основно да се игнорират, като се използва:

to_timestamp_tz('2014-01-28T12:00:0Z', 'YYYY-MM-DD"T"HH24:MI:SS"Z"')

Ако използвате to_timestamp_tz() без да посочвате часова зона, тогава по подразбиране е часовата зона на вашата сесия, както би to_timestamp(); така че час, посочен на Zulu/UTC, губи тази информация за зоната:

alter session set time_zone = 'America/New_York';
select to_timestamp_tz('2014-01-28T12:00:0Z',
  'YYYY-MM-DD"T"HH24:MI:SS"Z"') from dual;

TO_TIMESTAMP_TZ('2014-01-28T12:00:0Z','YYYY-MM-DD"T"HH24:MI:SS"Z"')
-------------------------------------------------------------------
28-JAN-14 12.00.00.000000000 AMERICA/NEW_YORK                       

Вашето време в 12:00 се показва като 12:00 в Ню Йорк, а не като 12:00 UTC.

По-безопасно преобразуване, ако се приеме, че вашите стойности винаги трябва да представляват UTC, е да посочите изрично часовата зона с from_tz() функция :

WHERE MODIFICATION_DATE >= from_tz(to_timestamp('2014-01-28T12:00:0Z',
  'YYYY-MM-DD"T"HH24:MI:SS"Z"'), 'UTC')

Това получава UTC времето правилно:

alter session set time_zone = 'America/New_York';
select from_tz(to_timestamp('2014-01-28T12:00:0Z',
  'YYYY-MM-DD"T"HH24:MI:SS"Z"'), 'UTC') from dual;

FROM_TZ(TO_TIMESTAMP('2014-01-28T12:00:0Z','YYYY-MM-DD"T"HH24:MI:SS"Z"'),'UTC')
-------------------------------------------------------------------------------
28-JAN-14 12.00.00.000000000 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. проблем при намирането на списък с файлове в директорията

  2. Тази наклонена черта в скрипт на Oracle PL/SQL грешка ли е?

  3. Подзаявка с грешка в невалиден идентификатор в sql

  4. Грешка при добавяне на режим на готовност

  5. Oracle PL/SQL процедурата работи по-бавно от SQL