问题描述
基本上是标题:
我正在寻找一种仅采用hive-1.0语法的合理方法,以仅将时间戳记中的毫秒字段截断。
我正在考虑的过分幼稚的方法是:
cast(from_unixtime(second(cast([TIMESTAMP_IN_QUESTION] as string)),"yyyy:mm:dd:ss"),as timestamp)
但是我相信这最后包括毫秒字段中的.00。
有一种干净的方法吗?
解决方法
最正确的时间戳格式是
yyyy-MM-dd HH:mm:ss.SSSSSS
默认情况下,不带毫秒的默认时间戳将以.00
或.0
结尾打印。因为它是时间戳的字符串表示形式。如果您希望它不包含毫秒部分,请将其转换为字符串并显式指定格式,或者仅使用子字符串获取不包含毫秒的值。 substr()可以与时间戳以及字符串文字一起正常使用。如果您只想删除毫秒而不更改其他所有内容,这是最简单的方法:
select substr('2020-01-01 12:10:10.123',1,19)
返回:
2020-01-01 12:10:10