在hive中把字符串转换为timetsamp

watbbzwu  于 2021-04-02  发布在  Hive
关注(0)|答案(1)|浏览(2071)

我有一个管道,我从sqlserver中获取数据,并将其加载到hive表中,我有一个时间戳列,就像'yyyy-mm-dd hh:mm:ss'。
sql table(datetime) ---> hive stage table(string)---->hive final table(timestamp)
在中间阶段的表格中,格式是'yyyy-mm-dd hh:mm:ss.0'。
我希望最终表的列看起来像'yyyy-mm-dd hh:mm:ss'。
我看到from_unixtime被使用了,但是当我像下面这样尝试时,它返回null。

FROM_UNIXTIME(UNIX_TIMESTAMP('date column','yyyy-mm-dd HH.mm.ss')) as ts

im pretty new to use hive and need some suggestion on what should i do here, thanks.

v64noz0r

v64noz0r1#

如果时间戳字符串的格式是'yyy-mm-dd hh:mm:ss.s',那么你可以使用timestamp()函数将其转换为时间戳类型。

timestamp(col)

你也可以直接在时间戳列中插入字符串。
因为'yyy-MM-dd HH:mm:ss.S'-是默认的时间戳格式,你需要使用FROM_UNIXTIME(UNIX_TIMESTAMP(col, format))转换。
你需要使用FROM_UNIXTIME(UNIX_TIMESTAMP(col, format))进行转换,如果格式不是'yyyy-MM-dd HH:mm:ss.S'.这个格式你应该转换为,而不是从。指定正确的从格式,它是大小写敏感的:MMmm不一样,定界符很重要:点和分号或空格不一样,等等。
参见格式手册:simpledateformat

相关问题