Hive SQL的时间处理函数及其用法

一、case when

第一种 格式 : 简单Case函数 :

格式说明

    case 列名

    when 条件值1 then 选择项1

    when 条件值2 then 选项2.......

    else 默认值 end

例子:

    select
    case  job_level
    when '1' then '水平1'
    when '2' then '水平2'
    when '3' then '水平3'
    else '其他' end
    from dbo.employe

第二种 格式 :Case搜索函数

格式说明

    case

    when 列名= 条件值1 then 选择项1

    when 列名=条件值2 then 选项2.......

    else 默认值 end

例子:

    update employee
    set e_wage =
    case
    when job_level = '1' then e_wage*1.97
    when job_level = '2' then e_wage*1.07
    when job_level = '3' then e_wage*1.06
    else e_wage*1.05 end

二、unix_timestamp

如果不带参数调用,返回一个Unix时间戳(自“1970-01-0100:00:00”UTC)作为无符号整数。

如果UNIX_TIMESTAMP()被调用有一个日期参数,它返回的参数为秒,自“1970-01-0100:00:00”UTC的数值。

日期参可以是一个DATE字符串,一个DATETIME字符串,一个TIMESTAMP或数字格式YYYYMMDD或YYYYMMDD。


三、from_unixtime

date为需要处理的参数(该参数是Unix 时间戳),可以是字段名,也可以直接是Unix 时间戳字符串

后面的 '%Y%m%d' 主要是将返回值格式化

例如:

>SELECT FROM_UNIXTIME( 1249488000, '%Y%m%d' )
->20071120
>SELECT FROM_UNIXTIME( 1249488000, '%Y年%m月%d日' )
->2007年11月20日


四、DATEDIFF 计算两个时间的差值

计算相差的天数
select datediff(DAY,'2012/8/1','2012/8/20') as daysum

有多个可以选择的参数:MONTH为月、DAY为查询天、HOUR为小时、MINUTE为分钟、SECOND为秒。在计算小时的时候,可能会有错误,所以使用下面的方式计算:

hour(final-time) - hour(start_time) + 24 * datediff(final_time, start_time)

请使用浏览器的分享功能分享到微信等