Преобразование строки в дату в db2

#sql #db2

#sql #db2

Вопрос:

Хорошо, я смог это исправить.

Я хочу преобразовать строку «10 февраля 2019 11:20» в «ДД-мм-гггг чч24: mi: ss».

Я пытался установить дату, но это не сработало. Я видел в других потоках, что функция translate может быть подходящим вариантом. Однако я несколько новичок в SQL, и ни одно из объяснений того, как использовать translate таким образом, каким-либо образом я не мог понять.

Я использую Windows и довольно свежую версию db2

Оригинал является

выберите

случай

когда (длина (столбца) = 50, тогда

to_date(substr(столбец, 1, 17), ‘дд-мм-гггг чч24:mi’))

ещё

Дата

завершение

из таблицы

Таким образом, это нахождение даты в строке большего размера.

теперь код является

Выберите

случай

когда (длина (столбца) = 50, тогда

to_timestamp(substr(столбец, 1, 17), ‘дд-мм-гггг чч24: mi’))

ещё

Дата

завершение

Из таблицы

Примечание: Я только что попробовал to_timestamp (’10 февраля 2019 года 11:20′, ‘дд-мм-гггг ч24), и я получил «10 февраля 2019 года 11:20», не может быть интерпретировано с использованием строки формата «дд-мм-гггг ч24: mi» для функции TIMESTAMP_FORMAT.

Комментарии:

1. Пожалуйста, покажите to_date() инструкцию, которую вы используете. Также объясните, почему это не работает.

Ответ №1:

Если вы хотите преобразовать строку -> Временную метку, попробуйте это:
отметка времени(’10 февраля 2019 года, 11:20′, ‘дд-пн-гггг, чч24:mi’)
to_timestamp является псевдонимом для timestamp_format .

Если вам нужно просто другое строковое представление этой временной метки (например, ваше 10-Feb-2019 11:20 -> 10-02-2019 11:20:00 ), попробуйте это:
to_char(отметка времени (’10 февраля 2019 11:20′, ‘дд-пн-гггг чч24: mi’), ‘ДД-ММ-ГГГГ ЧЧ24: MI: SS’)
to_char является псевдонимом для varchar_format .

Комментарии:

1. Я попробовал это, но получил ошибку SQL [22007]: «10 февраля 2019 11:20» не может быть интерпретировано с использованием строки формата «дд-мм-гггг чч24: mi» для функции TIMESTAMP_FORMAT.

2. Вы сделали не то, что я предложил. ‘mon’ вместо ‘mm’.

3. О, хорошо, я этого не уловил.

Ответ №2:

В DB2 date нет компонента времени.

Итак, попробуйте to_timestamp() :

 select to_timestamp('10-Feb-2019 11:20', 'DD-Mon-yyyy hh24:mi') 
  

Обратите внимание, что секунды не указаны в строковом значении, поэтому их не должно быть в спецификации формата. Однако конечное значение будет содержать секунды — все они равны нулю.

Комментарии:

1. Строка правильного формата должна быть DD-mon-yyyy hh24:mi , а не DD-mm-yyyy hh24:mi .

2. @MarkBarinstein . . . Хороший улов. Что действительно иронично, так это то, что я тестировал это в Oracle, и это работает с обоими mm и mon .

3. Спасибо за вашу помощь.