найти текущее время сервера в DB2 в определенном формате - PullRequest
0 голосов
/ 17 марта 2012

Я хочу получить текущее время сервера в DB2 в формате ЧЧ: ММ: СС: М

, например, 21: 05: 38: 7

Как мне изменить приведенный ниже запрос для достиженияэто:

SELECT current time FROM sysibm.sysdummy1

Спасибо за чтение!

1 Ответ

0 голосов
/ 18 марта 2012

Times, Dates, Timestamps - все типы данных, которые DB2 хранит в некоторой внутренней форме представления данных. Только когда вы просите посмотреть SELECT MyTime FROM MyTable, DB2 вынуждена конвертировать эти байты в то, что может прочитать человек. DB2 будет использовать настройки локали для преобразования DATE, например, в 2012-03-17, 17/03/2012, ...

Это может быть очень весело, если вы разрабатываете центральную базу данных DB2, а ваши клиенты из Великобритании, США, Франции, Индии ... Все они будут жаловаться на то, что даты искажены. Вы всегда должны думать, что DB2 сделает это неправильно и выполнит форматирование самостоятельно.

Эти вещи лучше всего сделать с помощью используемого вами инструмента отчетности. Таким образом, вы можете использовать правильный формат для вашего пользователя, и вам не нужно соглашаться на какие-либо настройки локали на сервере баз данных DB2.

В некоторых случаях вам придется выполнять форматирование в SQL. Вы читали статью Амит Бхаргавы, на которую ссылается ? Ближе к концу, автор создает функцию ts_fmt, которая может обрабатывать несколько форматов и которая может быть легко расширена с любым необходимым форматированием: просто добавьте этот код прямо перед частью ELSE.

when 'HH:MM:SS:M' 
    then hh || ':' || mi || ':' || ss || ':' || nnnnnn
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...