Конвертировать в DateTime в Oracle - PullRequest
0 голосов
/ 09 сентября 2011

У меня странный формат, который мне нужно преобразовать в отметку времени Oracle (не требуется фрактальных секунд). У меня есть два столбца, date_entered и time_entered, которые имеют этот формат из нашей AS / 400:

1110729 954
1110811 1216
1110815 1526
1110815 1659
1110817 1007
1110818 1000
1110821 1715
1110822 1320
1110823 1852
1110825 1743
1110826 1100
1110826 1559
1110826 1711
1110826 1906

Столбец «Дата» представляет собой дату AS / 400 с 1-м символом в виде отметки y2k ГГГММДД. Все даты на самом деле выше 2000 года, так что 1-й символ может быть проигнорирован при необходимости.

Кроме того, как вы можете видеть, мое поле time_entered представляет собой 24-часовую отметку времени, однако это поле "число", поэтому возможны 3-значные строки. Я хотел бы написать оператор SQL для преобразования этого в отметку времени Oracle. Не функция или что-то еще, а просто оператор выбора, чтобы выбрать дату и время этих двух столбцов вместе.

Ответы [ 2 ]

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

Вы пробовали:

select To_TimeStamp(substr(datefield,2)||lpad(timefield,4,'0'),'YYMMDDHH24MI') 
From table

У меня нет оракула на этой машине, но вышеприведенное должно работать для вас.

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

У меня есть экземпляр Oracle, и Sparky верен, только с небольшими изменениями. Необходимо изменить «+» на «||» а также необходимо изменить «чч» на «чч24»:

TO_TIMESTAMP(SUBSTR(datefield,2)||LPAD(timefield,4,'0'),'YYMMDDHH24MI')

Образец показан ниже:

SQL> describe oldvalues2
 Name                                     Null?    Type
 ---------------------------------------- -------- ----------------------------
 DATEVAL                                           VARCHAR2(7)
 TIMEVAL                                           VARCHAR2(4)

SQL> select * from oldvalues2
  2  /

DATEVAL TIME
------- ----
1110729 954
1110826 1906

SQL> select to_timestamp(substr(DATEVAL,2)||lpad(TIMEVAL,4,'0'),'YYMMDDHH24MI')
  2  from oldvalues2
  3  /

TO_TIMESTAMP(SUBSTR(DATEVAL,2)||LPAD(TIMEVAL,4,'0'),'YYMMDDHH24MI')
---------------------------------------------------------------------------
29-JUL-11 09.54.00.000000000 AM
26-AUG-11 07.06.00.000000000 PM
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...