从时间戳im impala获取毫秒

bf1o4zei  于 2021-06-26  发布在  Impala
关注(0)|答案(2)|浏览(726)

我有一个查询,其中我需要提取毫秒时间戳来匹配源中的数据。下面是来自sql server(源)的示例数据,列定义为datetime
u\ u日期
2007-10-26 10:07:00.000
2005-05-04 11:12:54.297
2004-05-29 03:56:24.792
目标是hadoop通过impala并定义为timestamp
u\ u日期
2007-10-26 10:07:00
2005-05-04 11:12:54.297000000
2013-05-31 04:07:00
2013-11-01 15:34:00
我正在寻找查询,以获得时间戳显示在源代码毫秒。我已经将我的查询放在下面,但它默认为000毫秒。
从表a中的\u unixtime(unix\u timestamp(u\u date),'yyyy-mm-dd hh:mm:ss.sss')中选择
生成的结果集如下:
2007-10-26 10:07:00.000
2005-05-04 11:12:54.000(毫秒.297默认为000)
2013-05-31 04:07:00.000
2013-11-01 15:34:00.000
请分享您的意见

ujv3wf0j

ujv3wf0j1#

如果您的数据库中存储了以毫秒为单位的unix时间戳
像这样的1525245791828
您希望从该字段中删除毫秒,以便可以进行unix时间戳比较。
你可以这样做:

cast((you_unix_timestamp_with_milliseconds_column/1000) as BIGINT)
yquaqz18

yquaqz182#

要获得高达3位毫秒的格式化时间戳,可以使用 from_timestamp 功能

SELECT from_timestamp(u_date, 'yyyy-MM-dd HH:mm:ss.SSS') FROM table;

函数 unix_timestamp 在函数运行时以某种方式丢弃毫秒信息 from_unixtime 似乎也不能很好地用毫秒来解释unix时间戳
(试验日期: Impala v2.9.0 )

相关问题