下面是我个人觉得会比较常用的日期函数:
now() | toYear() | toDayOfYear() | addYears() | subtractYears() |
today() | toMonth() | toDayOfMonth() | addMonths() | subtractMonths() |
toUnixTimestamp() | toQuarter() | toDayOfWeek() | addDays() | subtractDays() |
toDateTime() | addWeeks() | subtractWeeks() | ||
toDate() | toHour() | toYYYMM() | addQuarters() | subtractQuarters() |
toMinute() | toYYYMMDD() | addHours() | subtractHours() | |
dateDiff() | toSecond() | toYYYYMMDDhhmmss() | addMinutes() | subtractMinutes() |
formatDateTime() | addSeconds() | subtractSeconds() |
可以看一下这些函数的用法示例:
1、now()、today()、toUnixTimestamp()、toDateTime()、toDate()
select now(); -- 获取当前日期和时间
select today(); -- 获取当前日期
select yesterday(),today() - 1 ; -- 获取昨天的日期
select toUnixTimestamp(now()); -- 获取当前时间的 Unix时间戳
select toDateTime('2021-01-13 25:12:13') as time ; -- 字符串类型 转换 为 DateTime 类型
select toDate('2021-05-13 21:12:13') as date ; -- 字符串类型 转换 为 Date 类型
2、toYear()、toMonth()、toQuarter() 、toHour() 、toMinute() 、toSecond()
select toYear(toDate('2021-05-13')) as Year ; -- 年份
select toMonth(toDate('2021-05-13')) as Month ; -- 月份
select toQuarter(toDate('2021-05-13')) as Quarter; -- 季度
select toHour(toDateTime('2021-05-13 21:12:13')) ; -- 获取 小时(24小时制)
select toMinute(toDateTime('2021-05-13 21:12:13')) ;-- 获取 分钟
select toSecond(toDateTime('2021-05-13 21:12:13')) ;-- 获取秒数
3、toDayOfYear() 、toDayOfMonth()、toDayOfWeek()
select toDayOfYear(toDate('2021-05-13')) as day_of_year; -- 该年的第 133 天
select toDayOfMonth(toDate('2021-05-13')) as day_of_month; -- 该月的 第 13 天
select toDayOfWeek(toDate('2021-05-13')) as num_of_week; -- 该周的 星期四
4、toYYYMM()、toYYYMMDD()、toYYYYMMDDhhmmss()
select toYYYMM(now()); -- 转换为包含年份和月份编号(YYYY * 100 + MM)
select toYYYMMDD(now()); -- 转换为包含年份和月份编号的UInt32类型的数字(YYYY * 10000 + MM * 100 + DD)
select toYYYYMMDDhhmmss(now()); --将Date或DateTime转换为包含年份和月份编号的UInt64类型的数字(YYYY * 10000000000 + MM * 100000000 + DD * 1000000 + hh * 10000 + mm * 100 + ss);
5、addYears() 、addMonths()、addDays() 、addWeeks() 、addQuarters()、addHours() 、addMinutes() 、addSeconds()
select
toDate('2021-01-13') as date
, addYears(toDate('2021-01-13'),1) as date_1 -- 加 一年
, addMonths(toDate('2021-01-13'),2) as date_2 -- 加 二个月
, addDays(toDate('2021-01-13'),3) as date_3 -- 加 三天
, addWeeks(toDate('2021-01-13'),1) as date_4 -- 加 一周
, addQuarters(toDate('2021-01-13'),2)as date_5; -- 加 二个季度
select
toDateTime('2021-01-13 21:12:13') as time
, addHours(toDateTime('2021-01-13 21:12:13'),1) as time_1 -- 加 一个小时 (2021-01-13 22:12:13)
, addMinutes(toDateTime('2021-01-13 21:12:13'),2)as time_2 -- 加 二分 (2021-01-13 21:14:13)
, addSeconds(toDateTime('2021-01-13 21:12:13'),3)as time_3; -- 加 三个秒 (2021-01-13 21:12:16)
6、subtractYears() 、subtractMonths()、subtractDays() 、subtractWeeks() 、subtractQuarters()、subtractHours() 、subtractMinutes() 、subtractSeconds()
select
toDate('2021-01-13') as date
, subtractYears(toDate('2021-01-13'),1) as date_1 -- 减 一年
, subtractMonths(toDate('2021-01-13'),2) as date_2 -- 减 二个月
, subtractDays(toDate('2021-01-13'),3) as date_3 -- 减 三天
, subtractWeeks(toDate('2021-01-13'),1) as date_4 -- 减 一周
, subtractQuarters(toDate('2021-01-13'),2)as date_5; -- 减 二个季度
select
toDateTime('2021-01-13 21:12:13') as time
, subtractHours(toDateTime('2021-01-13 21:12:13'),1) as time_1 -- 减 一个小时 (2021-01-13 20:12:13)
, subtractMinutes(toDateTime('2021-01-13 21:12:13'),2)as time_2 -- 减 二分 (2021-01-13 21:10:13
, subtractSeconds(toDateTime('2021-01-13 21:12:13'),3)as time_3; -- 减 三个秒 (2021-01-13 21:12:10)
7、dateDiff() 注:若想了解dateDiff() 的说明以及语法等,可点击 此处 了解;
select dateDiff('day', toDateTime('2021-01-01 22:00:00'), toDateTime('2021-01-13 23:00:00'));
8、formatDateTime() 注:若想了解formatDateTime() 的说明以及语法等,可点击 此处 了解;
select formatDateTime(toDate('2020-01-04'), '%D') as date;
若哪里有错的,望指正,谢谢。
参考:https://clickhouse.tech/docs/en/sql-reference/functions/date-time-functions