hive 时间差(天、小时、分、秒)

2018-05-23  本文已影响0人  似水之星
    , unix_timestamp() - unix_timestamp(ymdhms), unix_timestamp()
    , unix_timestamp(ymdhms)
    , concat(CAST((unix_timestamp() - unix_timestamp(ymdhms)) / (60 * 60 * 24) AS int), '天 ', CAST((unix_timestamp() - unix_timestamp(ymdhms)) / (60 * 60) AS int) % 24, '小时 ',  
 CAST((unix_timestamp() - unix_timestamp(ymdhms)) / 60 AS int) % 60, '分 ', 
CAST((unix_timestamp() - unix_timestamp(ymdhms)) % 60 AS int), '秒')
    , ymdhms
FROM wl_csg.srv_open_account_webull_18_05_21

   说明:
   unix_timestamp()是hive系统时间,格式是timestamp,精确到秒。
   unix_timestamp(ymdhms)是把时间转换成timestamp格式,是2018-05-23 07:15:50格式。
   unix_timestamp() - unix_timestamp(ymdhms)是两个时间转换为timestamp之后相减,timestamp单位是秒,相减之后是两个时间之间相差的秒数。
   CAST((unix_timestamp() - unix_timestamp(ymdhms)) % 60 AS int)是相差的秒数。
   CAST((unix_timestamp() - unix_timestamp(ymdhms)) / 60 AS int) % 60是相差的分钟数。
   CAST((unix_timestamp() - unix_timestamp(ymdhms)) / (60 * 60) AS int) % 24是相差的小时数。
   concat(CAST((unix_timestamp() - unix_timestamp(ymdhms)) / (60 * 60 * 24) AS int)是相差的天数。
   查询结果如下:

查询结果
select
trunc(CURRENT_DATE, 'MM'),  --当月第一天
 last_day(CURRENT_DATE),   --当月最后一天
add_months(CURRENT_DATE, -1),  --增加一天trunc(add_months(CURRENT_DATE, -1), 'MM')  --上个月第一天

参考

上一篇 下一篇

猜你喜欢

热点阅读