配置单元:如何减去给定时间戳的1秒

5us2dqdw  于 2021-06-26  发布在  Hive
关注(0)|答案(2)|浏览(337)

我想从Hive中给定的时间戳中减去1秒。当我试图给一个给定的时间戳加上1秒时,它工作得很好,但是减法工作得不好。
下面的语句给出了正确的加法结果

select from_unixtime(unix_timestamp('2016-11-06 01:00:00.000','yyyy-MM-dd HH:mm:ss.SSS'),'yyyy-MM-dd HH:mm:ss.SSS') , from_unixtime(unix_timestamp('2016-11-06 01:00:00.000','yyyy-MM-dd HH:mm:ss.SSS') + 1,'yyyy-MM-dd HH:mm:ss.SSS')

但对于减法,我并没有得到正确的结果

select from_unixtime(unix_timestamp('2016-11-06 01:00:00.000','yyyy-MM-dd HH:mm:ss.SSS'),'yyyy-MM-dd HH:mm:ss.SSS') , from_unixtime(unix_timestamp('2016-11-06 01:00:00.000','yyyy-MM-dd HH:mm:ss.SSS') - 1,'yyyy-MM-dd HH:mm:ss.SSS')

我得到的减法结果

2016-11-06 01:00:00.000 2016-11-06 01:59:59.000

但预期的结果是

2016-11-06 01:00:00.000 2016-11-06 12:59:59.000
h43kikqp

h43kikqp1#

这对我有用:

from_unixtime(unix_timestamp(ref.rptg_end_ts,'yyyy-MM-dd HH:mm:ss') + (-1),'yyyy-MM-dd HH:mm:ss') ref.rptg_end_ts
yks3o0rb

yks3o0rb2#

“美国和加拿大:2016年11月6日dst结束。。。
美国、加拿大和墨西哥北部边境城市的大部分地区在2016年11月6日周日结束夏令时(dst)。
夏令时于2016年11月6日周日结束
从当地时间02:00(凌晨2点)到01:00(凌晨1点),时钟将被设置回标准时间1小时。”
https://www.timeanddate.com/news/time/usa-canada-end-dst-2016.html

相关问题