美文网首页
Hive内置函数之时间函数

Hive内置函数之时间函数

作者: guaren2009 | 来源:发表于2020-06-08 22:45 被阅读0次

    零、生产常用组合方式

    (0.1)离线数仓获取昨天的日期作为分区,格式yyyyMMdd

    regexp_replace(date_sub(from_unixtime(unix_timestamp(),'yyyy-MM-dd'),1) ,'-','')

    或者

    date_format(date_sub(from_unixtime(unix_timestamp(),'yyyy-MM-dd'),1),'yyyyMMdd')

    一、源码部分

    Hive的函数类为:org.apache.hadoop.hive.ql.exec.FunctionRegistry

    二、常用时间函数

    对于函数,除了知道怎么用,还需要知道返回值是什么类型,这里给出官方文档,文档中给出了函数的返回值类型

    官方文档见:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF#LanguageManualUDF-DateFunctions

    (2.1)from_unixtime(bigint unixtime[, string format])

    时间戳转字符串

    示例:

    select from_unixtime(1591627588); -- 2020-06-08 22:46:28

    select from_unixtime(1591627588,'yyyyMMddHHmmss'); -- 20200608224628

    (2.2)unix_timestamp()、unix_timestamp(string date)、unix_timestamp(string date, string pattern)

    时间字符串转时间戳

    示例:

    select unix_timestamp('2020-06-08 22:50:00'); -- 1591627800

    select unix_timestamp('20200608225000','yyyyMMddHHmmss'); -- 1591627800

    (2.3)to_date(string timestamp)

    时间字符串抽取日期

    示例:

    SELECT to_date('2009-07-30 04:17:52'); -- 2009-07-30

    (2.4)year(string date)、month(string date)、day(string date)、hour(string date)、minute(string date)、second(string date)

    时间字符串抽取日期

    这些函数是差不多的,都是从一个时间字符串中抽取出某个特定的时间字段。具有相同功能的还有extract(field FROM source)函数

    示例:

    SELECT day('2009-07-29 20:30:40'); -- 29

    SELECT minute('2009-07-29 20:30:40'); -- 30

    (2.5)date_add(date/timestamp/string startdate, tinyint/smallint/int days)、date_sub(date/timestamp/string startdate, tinyint/smallint/int days)

    时间加减

    这两个功能是类似的

    示例:

    SELECT date_add('2009-07-30 20:50:59', 1); -- 2009-07-31

    (2.6)datediff(string enddate, string startdate)

    计算日期间隔

    截图中结果是错误的,应该为-1。

    示例:

    SELECT datediff('2009-06-30', '2009-07-02'); -- -2

    SELECT datediff('2009-07-30', '2009-07-28'); -- 2

    (2.7)current_date、current_timestamp

    这两个函数使用desc function extended 查看会报错

    示例:

    获取当前日期或时间

    (2.8)date_format(date/timestamp/string ts, string fmt)

    时间格式化为指定格式

    示例:

    SELECT date_format('2015-04-08', 'yyyyMMdd'); -- 20150408

    相关文章

      网友评论

          本文标题:Hive内置函数之时间函数

          本文链接:https://www.haomeiwen.com/subject/uivdtktx.html