首页 > 数据库 >[SQL] Hive日期时间函数整理

[SQL] Hive日期时间函数整理

时间:2023-01-15 10:56:30浏览次数:49  
标签:00 01 函数 -- Hive SQL date select string

1. 日期时间常量

current_date:获取当前日期
current_timestamp:获取当前时间

2. 日期时间函数

2.1 获取日期时间指定部分

  1. 获取日期指定部分 extract(field FROM source)
-- 返回值类型:int
-- source: date, timestamp, interval, 可转化为date或timestamp的string
-- field: day, dayofweek, hour, minute, month, quarter, second, week, year

select extract(year from "1970-01-01 00:00:00");
> 1970

select extract(month from "1970-01-01");
> 1

select extract(hour from "2020-05-20 07:10:35");
> 7

select extract(month from interval '1-3' year to month);
> 3

select extract(minute from interval '3 12:20:30' day to second);
> 20
  1. 获取截至指定单元的日期 trunc(string date, string format)
-- 返回值类型:string
-- format: MONTH/MON/MM, YEAR/YYYY/YY

select trunc('2015-03-17', 'MM');
> '2015-03-01'
  1. 获取年份 year(string date)
-- 返回值类型:int
select year("1970-01-01 00:00:00");
> 1970

select year("1970-01-01");
> 1970
  1. 获取月份 month(string date)
-- 返回值类型:int
select month("1970-01-01 00:00:00");
> 1

select month("1970-11-01");
> 11
  1. 获取日期 day(string date) dateofmonth(date)
-- 返回值类型:int

select day("1970-01-01 00:00:00");
> 1

select day("1970-11-01");
> 1

select dayofmonth("1970-11-27");
> 27
  1. 获取季度 quarter(date/timestamp/string)
-- 返回值类型:int

select quarter('2022-06-01');
> 2
  1. 获取周数 weekofyear(string date)
-- 返回值类型:int

select weekofyear("1970-11-01 00:00:00");
> 44
  1. 获取时分秒 hour(string date) minute(string date) second(string date)
-- 返回值类型:int

select hour('2009-07-30 12:58:59');
> 12

select minute('11:05:20');
> 5

select second('11:05:20');
> 20

2.2 日期格式转换

  1. 时间戳转换为日期 to_date(string timestamp)
-- 返回值类型:string

select to_date("1970-01-01 00:00:00");
> "1970-01-01"
  1. 日期格式化 date_format(date/timestamp/string ts, string fmt)
-- 返回值类型:string

select date_format('2015-04-08', 'y');
> '2015'
  1. UTC时间戳转指定时区时间 from_utc_timestamp({any primitive type}*, string timezone)
-- 返回值类型:timestamp

select from_utc_timestamp('1970-01-01 08:00:00','PST');
> '1970-01-01 00:00:00'

select from_utc_timestamp(0.123,'PST');
> 1969-12-31 16:00:00.123
  1. 指定时区时间转UTC时间戳 to_utc_timestamp({any primitive type}*, string timezone)
-- 返回值类型:timestamp

select to_utc_timestamp('1970-01-01 00:00:00','PST');
> '1970-01-01 08:00:00'


select to_utc_timestamp(0.123,'PST');
> '1970-01-01 08:00:00.123'
  1. Unix时间戳转日期 from_unixtime(bigint unixtime[, string format])
-- 返回值类型:string

select from_unixtime('1660822225', 'yyyyMMdd');
> 20220718
  1. 获取当前Unix时间戳 unix_timestamp()
-- 返回值类型:bigint

select unix_timestamp();
> 1658115232
  1. 日期转Unix时间戳 unix_timestamp(string date[, string pattern])
-- 返回值类型:bigint

select unix_timestamp('2009-03-20 11:30:01');
> 1237573801

-- 给定字符串模式
select unix_timestamp('2009-03-20', 'yyyy-MM-dd');
> 1237532400

2.4 日期计算

  1. 计算日期差 datediff(string enddate, string startdate)
-- 返回值类型:int

select datediff('2009-03-01', '2009-02-27');
> 2
  1. 计算月份差 months_between(date1, date2)
-- 返回值类型:double
-- date1 - date2

select months_between('1997-02-28 10:30:00', '1996-10-30');
> 3.94959677
  1. 日期增减 date_add(date/timestamp/string startdate, tinyint/smallint/int days) date_sub()
-- 返回值类型:string (pre 2.1.0), date (2.1.0 on)

select date_add('2022-07-01', 1);
> '2022-07-02'

select date_sub('2022-07-01', 2);
> '2022-06-29'
  1. 月份增减 add_months(string start_date, int num_months)
    需要注意对于日期的处理
select add_months('2022-01-31', 1);
> '2022-02-28'

select add_months('2022-02-10', 20);
> '2023-10-10'
  1. 获取每月最后一日 last_day(string date)
select last_day('2022-02-02');
> '2022-02-28'

参考资料

标签:00,01,函数,--,Hive,SQL,date,select,string
From: https://www.cnblogs.com/ryou/p/17053197.html

相关文章

  • 欧拉函数的一些题
    欧拉函数及相关定理1.P2158[SDOI2008]仪仗队原题链接题目大意在一个从\((0,0)\)到\((n-1,n-1)\)的方阵中,有多少点能从原点“看到”分析一个点\(D\)能从原点“看......
  • 用Jersey构建RESTful服务5--Jersey+MySQL5.6+Hibernate4.3
    一、总体说明本例运行演示了用Jersey构建RESTful服务中,如何同过Hibernate将数据持久化进MySQL的过程二、环境1.上文的项目RestDemo2.MySQL5.6下载​​http://dev.mysql.com/......
  • Python 中的函数参数
    在通常情况下,定义函数时,函数的参数个数是预先确定的。例如,编写计算两个数相加的函数add(a,b),代码如下:defadd(a,b):returna+bsum=add(1,2)在第1行,定义了函数......
  • 【MySQL】MySQL8安装
    1.MySQL8安装安装环境操作系统:CentOS7MySQL版本:8.0.28安装方式:二进制Generic软件路径:/app/database数据路径:/data/3306日志路径:/binlog/3306MySQLCommunitySe......
  • MySql查看数据库及表容量大小并排序
    MySql查看数据库及表容量大小并排序带刀医生关注IP属地:江苏2022.04.1120:05:34字数85阅读1,219MySql查看数据库及表容量⼤⼩并排序查看所有数据库容量⼤⼩......
  • 【数据库】PostgreSQL/PgSql-根据模式名和字段名查询有该字段的所有表信息【通过表元
    【数据库】PostgreSQL/PgSql-根据模式名和字段名查询有该字段的所有表信息【通过表元数据信息和函数实现】...哥们要飞于2022-08-2314:51:00发布304收藏文章标签:数......
  • 自己动手写一个Mysql到PostgreSQL数据库迁移工具
    1.前言这段时间在进行Mysql到PostgreSQL数据库迁移工作.主要包含三部分工作,其一是构建数据库对象,包括表,视图,存储过程的构建,这部分由于我在项目早期就引入了li......
  • docker之Mysql安装教程
    部署mysql:5.7安装mkdir-p/app/docker/mysql/logmkdir-p/app/docker/mysql/datamkdir-p/app/docker/mysql/confdockerpullmysql:5.7dockerrun-d-p3......
  • python def函数总结
    简单无参函数编写脚本test1.pydefregister_user():"""docstring"""#描述函数的功能print("Welcome!")register_user()#调用函数执行脚本test1.py输出结果We......
  • mysql01-基础操作-增删查改
    连接mysqlmysql-uroot-p数据库操作创建数据库createDATABASE<数据库名>;删除数据库dropdatabase数据库名;选择数据库use数据库名;表操作创建表CREATET......