2012-05-08 3 views

ответ

3

К Unix timestamp Я предполагаю, что вы имеете в виду количество секунд (или что-то еще) с 1970-01-01 00:00:00 UTC.

В DB2 нет встроенных функций (с V6R1).
Вы также против следующих вопросов:

  • Все временные метки в DB2 являются «местное время» - они не содержат никакой информации часового пояса, и все CURRENT_TIMESTAMP записи основаны на том, что время система запроса считает его есть, не хозяин.
  • Переход на летнее время часто меняется. Вам нужно будет добавить накладные расходы, чтобы управлять этим для вашего преобразования.
  • Функция TIMESTAMPDIFF возвращает смета, не точное значение. Вероятно, вы могли бы выжить за годы/месяцы, с достаточными различиями, но дни вряд ли сократят его.
  • Отметка арифметика неточны (между прочим, месяцы считаются всегда 30 дней в длину ...)

Лучше всего будет начать использовать DAYS (который возвращает количество дней, прошедших с 0001 -01-01). Имейте в виду, что вам лучше делать все в UTC, потому что он будет не учитывать DST.

2

DAYS Использование и MIDNIGHT_SECONDS гораздо более точным, чем TIMESTAMPDIFF:

SELECT 
86400*(DAYS(CURRENT TIMESTAMP - CURRENT TIMEZONE)-DAYS('1970-01-01')) 
+ MIDNIGHT_SECONDS(CURRENT TIMESTAMP - CURRENT TIMEZONE) 
"UNIX_TIMESTAMP" 
FROM SYSIBM.SYSDUMMY1 
Смежные вопросы