乐趣区

关于sql:Hive时间查询函数大全

常常用到 hive 的日期查问、日期转换以及日期计算的函数,特此记录,以便查阅!

获取以后工夫

  1. 查问以后日期

    select current_date 
    > 2022-04-26
  2. 查问以后工夫戳

    select unix_timestamp()
    > 1650977624

    日期计算

  3. 日期加减天数
    加几天:date_add(A,B)
    减几天:date_sub(A,B)
    参数阐明:A 参数能够是 date,string,timestamp,格局必须是 YYYY-MM-DD 或者 YYYY-mm-dd hh:mm:ss,否则会返回 null;B 参数代表要加减的天数,正负数都可,date_add 函数中负数代表加,正数代表减
    样例:

    select date_add('2020-09-01',1)
    > 2020-09-02
    select date_sub('2020-10-01 12:30:20',1)
    > 2020-09-30 12:30:20
  4. 日期加减月份
    add_months(A,B)
    参数阐明:第一个参数能够是 date,string,timestamp,格局必须是 YYYY-MM-DD,第二个参数代表要加减的月份数

    select add_months('2022-05-20',-2)
    > 2022-03-20
  5. 求两个日期之间的天数差
    date_diff(A,B)
    参数阐明:A、B 以是 date,string,timestamp,格局必须是 YYYY-MM-DD 或者 YYYY-mm-dd hh:mm:ss,函数返回 A-B 的天数

    select datediff('2022-02-20','2022-04-26')
    > -65
  6. 求两个日期之间的月份差

    select months_between('2018-02-01','2018-07-04')
    > -5.095
    select floor(months_between('2018-02-01','2018-07-04'))  
    > -5
  7. 取年、月、日

    select year('2022-04-26') 
    > 2022
    select month('2022-04-26') 
    > 4
    select day('2022-04-26') 
    > 26
    select hour('2022-04-26 12:20:00') 
    > 12
    select minute('2022-04-26 12:20:00') 
    > 20
  8. 日期转 unix_time
    unix_timestamp(A,B)
    A 能够是 varchar,string, 能够是 date 或者 timestamp,若格局是 YYYY-MM-dd hh:mm:ss,则只须要一个参数,否则 B 参数需指定第一个日期的日期格局

    select unix_timestamp('2021/09/01','YYYY/MM/DD')
    > 1608998400
    select unix_timestamp('2021-09-01 12:00:00')
    > 1630468800
  9. 从 unix_time 工夫戳转日期函数:
    from_unixtime(A,B)
    A 是 unixtimestamp,B 是要转换成的日期格局,且第一个参数须是 10 位整数,返回的数据类型是 string

    select from_unixtime(unix_timestamp(),'yyyy-MM-dd HH:mm:ss')
    > 2022-05-20 17:56:47
  10. 不同日期格局之间进行转换,能够通过 unixtime 函数转换,先转成 unix timestamp, 再转回其它格局的日期

    select from_unixtime(unix_timestamp('2022/4/26','YYYY/mm/dd'),'YYYY-mm-dd') 
    > 2022-04-26
  11. 字符串日期类型转换
    将字符串转成 date 和 timestamp,参数必须是 yyyy-mm-dd 或者 yyyy-MM-dd HH:mm:ss,否则后果都是 null

    select cast('2022-02-20' as timestamp)
    > 2022-02-20 00:00:00.0
    select cast('2022-02-20' as date)
    > 2022-02-20
    select cast('2022/02/20' as timestamp)
    > null
退出移动版