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

时间:2017-09-12 15:02:31

标签: 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

2 个答案:

答案 0 :(得分:1)

这对我有用:

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

答案 1 :(得分:0)

  

“美国和加拿大:DST于2016年11月6日结束......

     

大多数美国,加拿大和墨西哥的北部边境城市   结束夏令时(DST)于2016年11月6日星期日   夏令时于11月的太阳报结束   2016年6月

     

从02:00(凌晨2点)到标准时间,时钟将缩短1小时   01:00(凌晨1点),当地时间。“

     

solutions