ClickHouce 常用日期函数小示例

下面是我个人觉得会比较常用的日期函数:

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

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值