1. 获取相关
1.1 获取时间戳unix_timestamp
语法格式: unix_timestamp()
返回类型:bigint
函数描述:以秒为单位获取当前时区的 Unix 时间戳。
> select unix_timestamp();
1654323887
1.2 源中检索extract
语法格式: extract(field FROM source)
返回类型:bigint
函数描述: 从源中检索诸如天或小时之类的字段。源必须是日期、时间戳、间隔或可以转换为日期或时间戳的字符串。支持的字段包括:日、星期几、小时、分钟、月、季度、秒、周和年。
> select extract(year from '2022-06-04 14:24:47');
2022
> select extract(month from '2022-06-04 14:24:47');
6
> select extract(week from '2022-06-04 14:24:47');
22
> select extract(day from '2022-06-04 14:24:47');
4
> select extract(hour from '2022-06-04 14:24:47');
14
> select extract(minute from '2022-06-04 14:24:47');
24
> select extract(second from '2022-06-04 14:24:47');
47
> select extract(dayofweek from '2022-06-04 14:24:47');
7 # 错一天
1.3 获取当前日期current_date
语法格式: current_date
返回类型:date
函数描述: 返回当前日期。
> select current_date;
2022-06-04
> select current_date();
2022-06-04
1.4 获取当前时间戳current_timestamp
语法格式: current_timestamp
返回类型:timestamp
函数描述: 返回当前时间戳。
> select current_timestamp;
2022-06-04 14:36:03.322000000
1.5 日期当月最后一天last_day
语法格式: last_day(string date)
返回类型:string
函数描述: 返回日期所属月份的最后一天。
> select last_day('2022-06-04 14:24:47');
2022-06-30
> select last_day('2022-06-04');
2022-06-30
1.6 日期后周几的最近日期next_day
语法格式: next_day(string start_date, string day_of_week)
返回类型:string
函数描述: 返回晚于 start_date 并命名为 day_of_week 的第一个日期。
> select next_day('2022-06-04 14:24:47','Sun')
2022-06-05
> select next_day('2022-06-04 14:24:47','TU')
2022-06-07
1.7 日期当月/年第一天trunc
语法格式: trunc(string date, string format)
返回类型:string
函数描述: 返回截断为格式指定的单位的日期。
> select trunc('2022-06-04 14:24:47','MM'); # MM、MON、MONTH
2022-06-01
> select trunc('2022-06-04 14:24:47','YEAR');
2022-01-01
1.8 日期间月份数months_between
语法格式: months_between(date1, date2)
返回类型:double
函数描述: 返回日期 date1 和 date2 之间的月数。如果 date1 晚于 date2,则结果为正。如果 date1 早于 date2,则结果是否定的。如果 date1 和 date2 是一个月中的同一天或两个月的最后一天,则结果始终为整数。date1 和 date2 类型可以是日期、时间戳或字符串。
> select months_between('2022-06-04 14:24:47','2022-09-01');
-2.88385342
> select months_between('2022-09-04','2022-09-01');
0.09677419
2. 转换相关
2.1 时间戳转日期from_unixtime
语法格式:from_unixtime(bigint unixtime[, string format])
返回类型:bigint
函数描述:将到 unix 纪元的秒数转换为表示当前系统时区中那个时刻的时间戳的字符串。
> select from_unixtime(1654323887,'yyyyMMdd');
20220604
> select from_unixtime(1654323887,'yyyy-MM-dd HH:mm:ss');
2022-06-04 14:24:47
2.2 日期转时间戳unix_timestamp
语法格式:unix_timestamp(string date)
返回类型:bigint
函数描述:使用默认时区和默认值将格式中的时间字符串转换yyyy-MM-dd HH:mm:ss 为 Unix 时间戳(以秒为单位),如果失败则返回 0。
> select unix_timestamp('2022-06-04 14:24:47');
1654323887
2.3 日期格式化转时间戳unix_timestamp
语法格式: unix_timestamp(string date, string pattern)
返回类型:bigint
函数描述:将具有给定模式的时间字符串转换为 Unix 时间戳(以秒为单位),如果失败返回 0。
> select unix_timestamp('20220604 14:24:47', 'yyyyMMdd HH:mm:ss');
1654323887
2.4 时间日期转日期to_date
语法格式:to_date(string timestamp)
返回类型:date
函数描述:返回时间日期的日期部分,返回一个日期对象。
> select to_date('2022-06-04 14:24:47');
2022-06-04
> select to_date('2022-06-04');
2022-06-04
2.5 日期转年份year
语法格式:year(string date)
返回类型:int
函数描述:返回日期时间的年份部分。
> select year('2022-06-04 14:24:47');
2022
> select year('2022-06-04');
2022
2.6 日期转季度quarter
语法格式:quarter(date/timestamp/string)
返回类型:int
函数描述:返回日期时间所在一年中的季度,返回值范围1~4。
> select quarter('2022-06-04 14:24:47');
2
> select quarter('2022-06-04');
2
2.7 日期转月份month
语法格式:month(string date)
返回类型:int
函数描述:返回日期时间的月份部分。
> select month('2022-06-04 14:24:47');
6
> select month('2022-06-04');
6
2.8 日期转日期day
语法格式:day(string date) dayofmonth(date)
返回类型:int
函数描述:返回日期时间的日期部分。
> select day('2022-06-04 14:24:47');
4
> select day('2022-06-04');
4
> select dayofmonth('2022-06-04');
4
2.9 日期转小时hour
语法格式:hour(string date)
返回类型:int
函数描述:返回时间的小时。
> select hour('2022-06-04 14:24:47');
14
2.10 日期转分钟minute
语法格式:minute(string date)
返回类型:int
函数描述:返回时间的分钟。
> select hour('2022-06-04 14:24:47');
24
2.11 日期转秒second
语法格式:second(string date)
返回类型:int
函数描述:返回时间的秒。
> select hour('2022-06-04 14:24:47');
47
2.12 日期转周weekofyear
语法格式:weekofyear(string date)
返回类型:int
函数描述:返回日期时间在一年的第几周。
> select weekofyear('2022-06-04 14:24:47');
22
2.13 时间戳转给定时区from_utc_timestamp
语法格式:from_utc_timestamp({*any primitive type*} ts, string timezone)
返回类型:timestamp
函数描述:将 UTC 中的时间戳转换为给定的时区。
> select from_utc_timestamp('2022-06-04 00:00:00','PRC');
2022-06-04 08:00:00
2.14 时间戳转UTC时区to_utc_timestamp
语法格式:to_utc_timestamp({*any primitive type*} ts, string timezone)
返回类型:timestamp
函数描述:将给定时区中的时间戳转换为 UTC。
> select to_utc_timestamp('2022-06-04 08:00:00','PRC');
2022-06-04 00:00:00
2.15 日期格式化为字符串date_format
语法格式:date_format(date/timestamp/string ts, string fmt)
返回类型:string
函数描述:将日期/时间戳/字符串转换为日期格式 fmt 指定的格式的字符串值。
> select date_format('2022-06-04 14:24:47','y')
2022
> > select date_format('2022-06-04 14:24:47','M')
6
3. 计算相关
3.1 日期比较datediff
语法格式:datediff(string enddate, string startdate)
返回类型:int
函数描述:返回从 startdate 到 enddate 的天数。
> select datediff('2022-06-01 14:24:47', '2022-06-04 14:24:47');
-3
> select datediff('2022-06-01', '2022-06-04');
-3
3.2 日期加date_add
语法格式:date_add(date/timestamp/string startdate, tinyint/smallint/int days)
返回类型:date
函数描述:返回 startdate 增加 days 后的日期。
> select date_add('2022-06-04', 3);
2022-06-07
> select date_add('2022-06-04', -3);
2022-06-01
3.3 日期减date_sub
语法格式:date_sub(date/timestamp/string startdate, tinyint/smallint/int days)
返回类型:date
函数描述:返回 startdate 减去 days 后的日期。
> select date_sub('2022-06-04', 3);
2022-06-01
> select date_sub('2022-06-04', -3);
2022-06-07
3.4 月份加add_months
语法格式:add_months(string start_date, int num_months)
返回类型:string
函数描述:返回 start_date 之后 num_months 的日期。
> select add_months('2022-06-04 14:24:47', 3);
2022-09-04
> select add_months('2022-06-04', 3);
2022-09-04
?
???END???
|