如何在hive中将字符串格式转换为日期格式

n1bvdmb6  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(1054)

我的表中有timestamp和date列。我的日期和时间戳列是字符串类型。我需要把它转换成日期和时间戳格式。但我的数据格式是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

提前谢谢

bkkx9g8r

bkkx9g8r1#

你可以试试这个命令
unix\u时间戳(日期,‘mm/dd/yyyy h:mm:ss’)
也许能解决你的问题。我现在没有Hive设置。

j7dteeu8

j7dteeu82#

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 |
+----------------+---------------------+

相关问题