powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Преобразование из строки в TIMESTAMP универсальный вариант
4 сообщений из 4, страница 1 из 1
Преобразование из строки в TIMESTAMP универсальный вариант
    #37112251
kbowner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уважаемые разработчики, помогите, пожалуйста, понять - как сделать такое преобразование?

Сейчас дата приходит ко мне в формате строки вида: 'Jan 10, 2011 12:10:15 PM'. Как вернут TIMESTAMP?
Уже фактически все перепробовал. Парсинг через SUBSTR, LEFT и т.п. очень громоздкий выходит и на месте, где "AM/PM" много кода получается.

Везде встречаю примеры вроде
Код: plaintext
1.
SELECT TIMESTAMP_FORMAT('1999-12-31 23:59:59',
       'YYYY-MM-DD HH24:MI:SS') FROM SYSIBM.SYSDUMMY1

Но это ведь какой-то простейший случай.
Плюс, в теории, мне дата может придти и не в формате 'Jan 10, 2011 12:10:15 PM', а как-нибудь типа 'YYYY/DD/MM HH12:MI:SS' или какой-нибудь еще формат.
Эдакий универсальный вариант возможен ли?
Ну или хотя бы как-нибудь компактно и красиво?

Спасибо за советы.
...
Рейтинг: 0 / 0
Преобразование из строки в TIMESTAMP универсальный вариант
    #37114731
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kbowner,

версия db2 какая?
Если >= 9.5, то: TIMESTAMP_FORMAT
Если меньше или не устараивают возможности, можно маленькую java-функцию написать, которая будет возможности SimpleDateFormat использовать:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select source, pattern, barin_m.timestamp_format(source, pattern) ts
from table(values
  ('Jan 10, 2011 12:10:15 PM', 'MMM d, yyyy hh:mm:ss a')
, ('2011/10/01 12:10:15 AM', 'yyyy/d/MM hh:mm:ss a')
) t (source, pattern);

SOURCE                   PATTERN                TS                        
------------------------ ---------------------- --------------------------
Jan  10 ,  2011   12 : 10 : 15  PM MMM d, yyyy hh:mm:ss a  2011 - 01 - 10 - 12 . 10 . 15 . 000000 
 2011 / 10 / 01   12 : 10 : 15  AM   yyyy/d/MM hh:mm:ss a    2011 - 01 - 10 - 00 . 10 . 15 . 000000 
...
Рейтинг: 0 / 0
Преобразование из строки в TIMESTAMP универсальный вариант
    #37115179
kbowner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mark Barinstein,
Спасибо за ответ прежде всего.

Да, версия 9.5 сейчас, в самом ближайшем будущем будет 9.7.
TIMESTAMP_FORMAT пробовал, но он странно как-то работает.
По крайней мере, вот пишу я свою дату типа:
Код: plaintext
1.
SELECT TIMESTAMP_FORMAT('Jan 10, 2011 12:10:15 PM',
       'MON DD, YYYY HH12:MI:SS') FROM SYSIBM.SYSDUMMY1
Как я предполагаю, в качестве второго параметра надо задавать шаблон для даты, передаваемой первым параметром?
Что-то или я делаю не так, или не так, как я ожидаю, работает эта функция.

Внешние функции, конечно, можно - но это будет последний выбор.
Спасибо.
...
Рейтинг: 0 / 0
Преобразование из строки в TIMESTAMP универсальный вариант
    #37115381
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kbownerДа, версия 9.5 сейчас, в самом ближайшем будущем будет 9.7.
TIMESTAMP_FORMAT пробовал, но он странно как-то работает.
По крайней мере, вот пишу я свою дату типа:
Код: plaintext
1.
SELECT TIMESTAMP_FORMAT('Jan 10, 2011 12:10:15 PM',
       'MON DD, YYYY HH12:MI:SS') FROM SYSIBM.SYSDUMMY1
В 9.7 было бы так:
Код: plaintext
 TIMESTAMP_FORMAT ('Jan 10, 2011 12:10:15 PM', 'MONTH DD, YYYY HH12:MI:SS AM')
Но в 9.5 нет MONTH, AM/PM.
Поэтому в таком виде, как в примере, в 9.5 оно не отформатируется...
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Преобразование из строки в TIMESTAMP универсальный вариант
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]