Вычитание часов из метки времени Unix - PullRequest
0 голосов
/ 07 мая 2018

Следующий запрос выбирает метку времени Unix. Это должно быть 1 вечера, но говорит 5 вечера из-за UTC. Это должно быть по восточному времени 1 вечера, поэтому мне нужно вычесть 4 часа из него. Какой лучший способ сделать это?

SELECT CAST(to_date('1970-01-01', 'YYYY-MM-DD') + substr(STARTTIME,0,10)/60/60/24 as timestamp)

Ответы [ 2 ]

0 голосов
/ 07 мая 2018

Вы можете попробовать это:

SELECT TO_CHAR(sysdate, 'DD-MON-YYYY HH24:MI:SS') AS myDate
FROM   dual;

Для получения дополнительной информации прочитайте этот документ .

0 голосов
/ 07 мая 2018

Вы не должны рассчитывать вручную. Вы должны добавить или вычесть часовой пояс.

Oracle, как преобразовать время в UTC в местное время (информация о смещении отсутствует)

Вот пример запроса:

SELECT TO_CHAR (
           FROM_TZ (CAST (SYSDATE AS TIMESTAMP), 'UTC')
               AT TIME ZONE 'EUROPE/BERLIN',
           'YYYY-MM-DD HH24:MI:SS TZH:TZM TZR')
           AS BERLIN_Time_complete,
           TO_CHAR (
           FROM_TZ (CAST (SYSDATE AS TIMESTAMP), 'UTC')
               AT TIME ZONE 'UTC',
           'YYYY-MM-DD HH24:MI:SS TZH:TZM TZR')
           AS UTC_Complete,
           TO_CHAR (
           FROM_TZ (CAST (SYSDATE AS TIMESTAMP), 'UTC')
               AT TIME ZONE 'EUROPE/BERLIN',
           'YYYY-MM-DD HH24:MI:SS TZH:TZM')
           AS BERLIN_Time_complete,
           TO_CHAR (
           FROM_TZ (CAST (SYSDATE AS TIMESTAMP), 'UTC')
               AT TIME ZONE 'EUROPE/BERLIN',
           'TZH:TZM')
           AS BERLIN_Timezone,
           TO_CHAR (
           FROM_TZ (CAST (SYSDATE AS TIMESTAMP), 'UTC')
               AT TIME ZONE 'EUROPE/BERLIN',
           'TZR')
           AS Timezone_Name
  FROM DUAL;

Ключ для формата:

  • ГГГГ: год из четырех цифр (0000-9999 от: 2018)
  • ММ: месяц с двумя цифрами (01-12)
  • DD: день с двумя цифрами (01-31)
  • ЧЧ24: час 00-23
  • МИ: минуты 00-59
  • SS: секунды 00-59
  • TZH: часовой пояс-часы
  • TZM: часовой пояс-минуты (есть часовые пояса со смещением 30 минут)
  • TZR: название часового пояса

Вы должны поиграться с ними, чтобы понять to_date() / to_char(). Вам это понадобится.

Если вы действительно хотите добавить часы. Вот пример:

select sysdate + INTERVAL '2' HOUR from dual;
...