DB2 секунд дня на читаемое время - PullRequest
1 голос
/ 08 сентября 2011

Я читаю целочисленное поле (время открытия магазина), которое находится в секундах дня, и преобразовываю его во что-то, что кто-то действительно сможет прочитать.

Пример: 32400 секунд = 9 часов утра (32400/3600 = 9)

Это нормально, если каждый магазин открывается ровно в час, но теперь некоторые магазины открываются и закрываются в полчаса.

Пример 9:30 возвращается как 9 (34200/3600 = 9), что не хорошо. Я не хочу, чтобы 34200 вернулся как 9,5.

В идеале я хочу, чтобы 32400 возвращались как 900, а 34200 возвращались как 930, а 46800 возвращались как 1300. Входные и выходные параметры должны быть целыми числами (я не могу изменить типы столбцов).

Есть ли простой способ сделать это в DB2? Спасибо

Ответы [ 2 ]

4 голосов
/ 09 сентября 2011

Это очень просто (при условии, что вы используете DB2 в Linux, UNIX или Windows):

VALUES INT(TIME('00:00:00') + 34200 seconds)/100

Это вернет желаемое целое число 930 для ввода 34200 и 1300для входа 46800.

1 голос
/ 09 сентября 2011

Я предполагаю, что ваши текущие данные показывают секунды , а не миллисекунды , как первоначально указано ...

Ниже приведен правильный тип данных time в DB2:

SELECT CAST('00:00:00' as TIME) + (34200/3600) HOURS + MOD(34200/60, 60) MINUTES
FROM sysibm/sysdummy1  

После этого перевод в более читаемый формат легко выполняется в вашем коде дисплея.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...