clickhouseSQL日期相关

1. 毫秒级时间戳转日期/小时

sql 复制代码
--13位时间戳转具体时间
toDateTime(report_time / 1000) as _c00 

-- 获取时间戳对应的时间点整点(结果:%Y-%m-%d %H:00:00.0) eg:2022-09-28 23:00:00.0
toStartOfHour(toDateTime(report_time / 1000)) AS _10

-- 获取时间点整点(结果无日期:%H)eg:23
toHour(FROM_UNIXTIME(report_time div 1000)) as _100

-- 13位时间戳转成年月日时(结果:%Y-%m-%d %H)
FROM_UNIXTIME(report_time div 1000,'%Y-%m-%d %H') 


-- 获取时间戳对应的日期开始时间(结果:%Y-%m-%d 00:00:00.0)eg:2022-09-28 00:00:00.0
toStartOfDay(toDateTime(report_time / 1000)) AS _02

--获取时间戳对应的日期(结果:%Y-%m-%d)eg:2022-09-28
toDate(toDateTime(report_time / 1000)) AS _01
toDate(toStartOfDay(toDateTime(report_time / 1000))) AS _0

-- 获取n分钟间隔(eg,10分钟间隔指00-09,10-19......55-59)
toStartOfInterval(toDateTime(report_time / 1000), INTERVAL 10  minute)

-- 字符串时间转datetime
toDateTime('2023-02-02 01:02:15')

结果如下:

● "/"和"div"的区别

"/"非整除,结果仍然是浮点数

"div"为整除,得到10位数结果

2. 当前时间往前推

解决凌晨0点之后,例行时间是跑前一日23点数据的问题

sql 复制代码
-- 获取当前时间
now()

-- 当前时间前推1小时
date_sub(hour, 1, now())

-- 再转换为日期
toDate(date_sub(hour, 1, now()))

-- 前推n天
date_sub(day,7,toDate(date_sub(hour,1,now())))--前推7天

-- 当前时间往前推1小时,并转化为int8格式
toInt8(substring(cast(date_sub(hour, 1, toDateTime('2023-02-02 01:02:15')) as String), 12, 2))
toInt8(substring(CAST(minus(toDateTime('2023-02-02 01:02:15'), toIntervalHour(1)), 'String'), 12, 2))
-- toDateTime('2023-02-02 01:02:15') = now()
相关推荐
PaperData10 小时前
2000-2025年《中国县域统计年鉴》pdf+excel版(附赠面板数据)
数据库·人工智能·数据分析·pdf·经管
冷小鱼11 小时前
从关系模型(SQL)基石到AI与信创时代的智能查询语言
数据库·sql
庞轩px11 小时前
致远互联实习复盘:一条SQL替代300次循环查询,组织架构选择器从5秒降到300毫秒
java·sql·mysql·mybatis·实习经历·n+1问题·join联表查询
LLON erva11 小时前
Redis-配置文件
数据库·redis·oracle
童话ing11 小时前
【Redis】026 互联网大厂 Redis 面试高频题
数据库·redis·面试
钰衡大师11 小时前
Activiti 7 工作流技术文档
java·数据库·spring boot
Treh UNFO11 小时前
nginx的重定向
大数据·数据库·nginx
jvvz afqh11 小时前
mysql用户名怎么看
数据库·mysql
eDEs OLDE11 小时前
CC++链接数据库(MySQL)超级详细指南
c语言·数据库·c++
EXnf1SbYK11 小时前
Redis分布式锁进阶第八篇:锁超时乱序深度踩坑 + 看门狗失效真实溯源 + 业务长耗时标准化兜底方案
数据库·redis·分布式