2017-02-23 55 views
0

У меня есть метки времени и даты в моей таблице. Мои столбцы даты и времени указаны в строковом типе. Мне нужно преобразовать его в формат DATE и TIMESTAMP. Но формат в моих данных - 2/4/2017 3:03. Поэтому, когда я конвертирую его в тип данных TIMESTAMP, он дает NULL. Что мы можем сделать, чтобы решить эту проблему?как преобразовать формат строки в формат даты в улье

Вот мой пример даты & Данные столбца времени.

2/3/2017 23:37 
2/3/2017 23:37 
2/3/2017 23:40 
2/3/2017 23:50 
2/3/2017 23:51 
2/3/2017 23:53 
2/3/2017 23:55 
2/4/2017 0:08 
2/4/2017 0:57 

Заранее спасибо

+0

показать свой код того, что вы пробовали ?? –

+0

d/M/yyyy или M/d/yyyy? –

ответ

1
create table mytable (dt_tm string); 

insert into mytable values 
    ('2/3/2017 23:37') 
    ,('2/3/2017 23:37') 
    ,('2/3/2017 23:40') 
    ,('2/3/2017 23:50') 
    ,('2/3/2017 23:51') 
    ,('2/3/2017 23:53') 
    ,('2/3/2017 23:55') 
    ,('2/4/2017 0:08') 
    ,('2/4/2017 0:57') 
; 

select dt_tm 
     ,cast(from_unixtime(unix_timestamp(dt_tm,'dd/MM/yyyy HH:mm'),'yyyy-MM-dd 00:00:00') as timestamp) 

from mytable 
; 

+----------------+---------------------+ 
| 2/3/2017 23:37 | 2017-03-02 00:00:00 | 
| 2/3/2017 23:37 | 2017-03-02 00:00:00 | 
| 2/3/2017 23:40 | 2017-03-02 00:00:00 | 
| 2/3/2017 23:50 | 2017-03-02 00:00:00 | 
| 2/3/2017 23:51 | 2017-03-02 00:00:00 | 
| 2/3/2017 23:53 | 2017-03-02 00:00:00 | 
| 2/3/2017 23:55 | 2017-03-02 00:00:00 | 
| 2/4/2017 0:08 | 2017-04-02 00:00:00 | 
| 2/4/2017 0:57 | 2017-04-02 00:00:00 | 
| 2/3/2017 23:37 | 2017-03-02 00:00:00 | 
| 2/3/2017 23:37 | 2017-03-02 00:00:00 | 
| 2/3/2017 23:40 | 2017-03-02 00:00:00 | 
| 2/3/2017 23:50 | 2017-03-02 00:00:00 | 
| 2/3/2017 23:51 | 2017-03-02 00:00:00 | 
| 2/3/2017 23:53 | 2017-03-02 00:00:00 | 
| 2/3/2017 23:55 | 2017-03-02 00:00:00 | 
| 2/4/2017 0:08 | 2017-04-02 00:00:00 | 
| 2/4/2017 0:57 | 2017-04-02 00:00:00 | 
+----------------+---------------------+ 
+0

Спасибо, что это работает. Но мне нужно извлечь только дату из этого поля, чтобы узнать, насколько эффективна дневная производительность и изменить тип данных этого поля на TIMESTAMP. – user77

+0

Измените ваше сообщение, чтобы отразить ваш реальный запрос. Я пришлю вам решение за 15 минут –

+0

Отметьте обновленный ответ –

0

вы можете попробовать эту команду

unix_timestamp (даты, 'MM/dd/yyyy h: mm: ss')

Возможно, это решит вашу проблему. Сейчас у меня нет настройки улья.