将HIVE-1.0时间戳截断为秒,并将格式从"yyyy:mm:dd:ss.sss"更改为"yyyy:mm:DD:ss" [英] Truncate hive-1.0 timestamp to seconds and change format from "yyyy:mm:dd:ss.SSS" to "yyyy:mm:dd:ss"

查看:57
本文介绍了将HIVE-1.0时间戳截断为秒,并将格式从"yyyy:mm:dd:ss.sss"更改为"yyyy:mm:DD:ss"的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

基本标题:

我正在寻找一种合理的方法,仅使用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

这篇关于将HIVE-1.0时间戳截断为秒,并将格式从"yyyy:mm:dd:ss.sss"更改为"yyyy:mm:DD:ss"的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆