我有一个管道,我从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.
1条答案
按热度按时间v64noz0r1#
如果时间戳字符串的格式是'yyy-mm-dd hh:mm:ss.s',那么你可以使用timestamp()函数将其转换为时间戳类型。
你也可以直接在时间戳列中插入字符串。
因为
'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'
.这个格式你应该转换为,而不是从。指定正确的从格式,它是大小写敏感的:MM
和mm
不一样,定界符很重要:点和分号或空格不一样,等等。参见格式手册:simpledateformat