Mysql和 ClickHouse计算时间函数的差值的区别(dateDiff和TIMESTAMPDIFF)
TIMESTAMPDIFF函数和dateDiff函数分别是Mysql和 ClickHouse数据库的计算两个日期差值的函数,在项目中踩过坑,所以在此记录一下有共同点和异同点,避免今后继续踩坑。
注:这里 mysql的版本为8.0.25,clickhouse为20.12.5.14
一、相同:
- 1.1、都是计算日期差值的函数
- 1.2、都支持 年(year)、月(month)、日(day)、时(hour)、分(minute)、秒(second)、周(week)、刻钟(quarter) 的差值计算
二、不相同
- mysql的TIMESTAMPDIFF函数结果 是下取整,dateDiff函数结果是向上取整
三、例子
- mysql
/*目前版本为mysql8.0.25 * TIMESTAMPDIFF函数是将两个日期相减后得到精确的的时间差值,后下取整*/SELECT /*计算 年份 这里两个日期差值大于0年但小于1年 结果为0*/TIMESTAMPDIFF(YEAR,STR_TO_DATE(CONCAT('2020-11-01',' 00:00:00' ),'%Y-%m-%d %H:%i:%s'),STR_TO_DATE(CONCAT('2021-02-01',' 00:00:30' ),'%Y-%m-%d %H:%i:%s')) AS year,/*计算 月份 这里两个日期差值大于1个月但未到2个月 结果为1*/TIMESTAMPDIFF(MONTH,STR_TO_DATE(CONCAT('2021-01-21',' 00:00:00' ),'%Y-%m-%d %H:%i:%s'),STR_TO_DATE(CONCAT('2021-03-02',' 00:00:30' ),'%Y-%m-%d %H:%i:%s')) AS month,/*计算 天 这里两个日期差值大于0天但未到1天 结果为0*/TIMESTAMPDIFF(DAY,STR_TO_DATE(CONCAT('2021-01-01',' 10:00:00' ),'%Y-%m-%d %H:%i:%s'),STR_TO_DATE(CONCAT('2021-01-02',' 01:00:30' ),'%Y-%m-%d %H:%i:%s')) AS day,/*计算 小时 这里两个日期差值大于1小时但未到1小时 结果为1*/TIMESTAMPDIFF(HOUR,STR_TO_DATE(CONCAT('2021-01-01',' 00:40:00' ),'%Y-%m-%d %H:%i:%s'),STR_TO_DATE(CONCAT('2021-01-01',' 02:10:30' ),'%Y-%m-%d %H:%i:%s')) AS hour,/*计算 分钟 这里两个日期差值大于1分钟但未到2分钟 结果为1*/TIMESTAMPDIFF(MINUTE,STR_TO_DATE(CONCAT('2021-01-01',' 10:10:40' ),'%Y-%m-%d %H:%i:%s'),STR_TO_DATE(CONCAT('2021-01-01',' 10:12:12' ),'%Y-%m-%d %H:%i:%s')) AS minute,/*计算 毫秒 这里两个日期差值 结果为-10*/TIMESTAMPDIFF(SECOND,STR_TO_DATE(CONCAT('2021-01-01',' 00:00:40' ),'%Y-%m-%d %H:%i:%s'),STR_TO_DATE(CONCAT('2021-01-01',' 00:00:30' ),'%Y-%m-%d %H:%i:%s')) AS second;
- clickhosue
/*目前版本为clickhouse 20.12.5.14 * dateDiff函数是将两个日期相减后得到精确的的时间差值,后上取整* */
SELECT /*计算 年份 这里两个日期差值大于0年但小于1年 结果为1*/dateDiff('year', toDateTime('2020-11-01 00:00:00'), toDateTime('2021-02-01 00:00:30')) AS year,/*计算 月份 这里两个日期差值大于1个月但未到2个月 结果为2*/dateDiff('month', toDateTime('2021-01-21 00:00:00'), toDateTime('2021-03-02 00:00:30')) AS month,/*计算 天 这里两个日期差值大于0天但未到1天 结果为1*/dateDiff('day', toDateTime('2021-01-01 10:00:00'), toDateTime('2021-01-02 01:00:30')) AS day,/*计算 小时 这里两个日期差值大于1小时但未到1小时 结果为2*/dateDiff('hour', toDateTime('2021-01-01 00:40:00'), toDateTime('2021-01-01 02:10:30')) AS hour,/*计算 分钟 这里两个日期差值大于1分钟但未到2分钟 结果为2*/dateDiff('minute', toDateTime('2021-01-01 10:10:40'), toDateTime('2021-01-01 10:12:12')) AS minute,/*计算 毫秒 这里两个日期差值 结果为-10*/dateDiff('second', toDateTime('2021-01-01 00:00:40'), toDateTime('2021-01-01 00:00:30')) AS second;
结果对比:
Mysql和 ClickHouse计算时间函数的差值的区别(dateDiff和TIMESTAMPDIFF)相关推荐
- python 计算时间、日期差值类
环境:win10+python3x V:1.0 简单实现了一下功能本地测试可用,记录下次接着二次开发用 import datetime import re class TimeDifferenceC( ...
- python计算日期间的差值,python 计算时间、日期差值类
环境:win10+python3x V:1.0 简单实现了一下功能本地测试可用,记录下次接着二次开发用 import datetime import re class TimeDifferenceC( ...
- 处理时间_3_计算两个时间列工作日差值
计算两个时间列工作日差值 需求描述 需求:对EMP表里员工KING和SMITH的hiredate入职时间差,这里单位是天且是工作日时间,即周末不计算在内. 解决方法:通过DATEDIFF函数来完成. ...
- 处理时间_2_计算两个时间列的差值
计算两个时间列的差值 需求描述 需求:对EMP表里员工KING和SMITH的hiredate入职时间差,这里单位是分钟.小时.天.周.月.年. 解决方法:通过DATEDIFF函数来完成. 注: 数据库 ...
- mysql数据中计算时间差函数
mysql数据中计算时间差函数 MySql计算两个日期的时间差函数TIMESTAMPDIFF用法: 语法: TIMESTAMPDIFF(interval,datetime_expr1,datetime ...
- mysql 日期和时间函数_介绍一下mysql的日期和时间函数
介绍一下mysql的日期和时间函数 mysql> SELECT PERIOD_DIFF(9802,199703); -> 11 DATE_ADD(date,INTERVAL expr ty ...
- MySQL中常用日期时间函数及获得
MySQL中常用日期时间函数: 下面的查询选择了所有记录,其date_col的值是在最后30天以内: mysql> SELECT something FROM table WHERE TO_DA ...
- mysql时间函数now()_MySQL中时间函数NOW()和SYSDATE()的区别
mysql中日期函数还是比较常用的.主要有NOW()和SYSDATE()两种,虽然都表示当前时间,但使用上有一点点区别. NOW()取的是语句开始执行的时间,SYSDATE()取的是动态的实时时间. ...
- oracle中时间差转秒,oracle计算时间秒数差
--计算plsql处理时间差 --qzq declare time1 timestamp; --开始时间 time2 timestamp; --结束时间 sum1 number(9); --时间差(s ...
最新文章
- SIGSEGV 和 SIGBUS gdb看汇编
- 19-7-14 学习笔记
- systemverilog硬件设计及建模_3D建模和渲染都吃什么硬件?设计师该如何选购电脑...
- python爬虫基础教程115_Python解析网页源代码中的115网盘链接实例
- OpenCV使用霍夫变换进行寻线的实例(附完整代码)
- 如何查询高考2021普体成绩,中考体育成绩对照表2020
- testufo测试刷新率测试_上手体验微星电竞显示器PAG301CR:200Hz高刷新率只是它的小亮点...
- MySQL数据库基础(简介、操作规范、基本指令)
- 看看webpack打包优化
- fodora lianjie mysql_Fedora 16 下安装MySql 服务器及linux c 连接MySql
- progressbar 自定义样式_Progressbar的简单使用
- 你以为我确定能解决难题?也是硬着头皮向前冲
- pgm图像缩小C语言,C++将二进制(P5)图像转换为ascii(P2)图像(.pgm)
- VBScript入门篇
- 怎么修改背景图片大小的HTML代码,网页背景图片的大小的代码是什么
- input中使用pattern属性
- linux vim命令详解 编辑文件 保存 退出
- Android Studio开启DDMS查看手机文件
- IDEA无法启动:error launching idea (Failed to create JVM )
- 《Hadoop系列》脚本开发自动化配置伪分布式Hadoop