Получить сегодняшнюю дату - другой часовой пояс
Я просто хотел узнать, хорош ли следующий SQL для преобразования времени сервера США в дату в Таиланде. Поскольку у нас разница во времени 12 часов, а время TH опережает время США
SELECT TO_DATE(
TO_CHAR(
SYSTIMESTAMP AT TIME ZONE 'Asia/Bangkok', 'yyyy-mm-dd',
'NLS_DATE_LANGUAGE = american'), 'yyyy-mm-dd') AS TODAY
FROM dual;
Работает отлично. Но есть ли другой лучший способ конвертировать временную метку сервера из одного часового пояса в другой, так как мне нужно сравнить сегодняшнюю дату на основе этого результата в моем внешнем SQL.
2 ответа
Нет причин приводить TIMESTAMP к CHAR, а затем снова возвращаться к TIMESTAMP. Просто делай
SELECT SYSTIMESTAMP AT TIME ZONE 'Asia/Bangkok' AS TODAY
FROM dual;
Вы можете CAST метку времени в желаемый часовой пояс.
Например,
SQL> WITH data AS (
2 SELECT SYSTIMESTAMP AT TIME ZONE 'Asia/Bangkok' tm_bangkok FROM dual
3 )
4 SELECT tm_bangkok,
5 CAST(tm_bangkok AT TIME ZONE 'EST' AS TIMESTAMP) tm_est
6 FROM data;
TM_BANGKOK TM_EST
--------------------------------------------- ----------------------------
03-NOV-15 12.54.18.951000 PM ASIA/BANGKOK 03-NOV-15 12.54.18.951000 AM