Mysql中DATEDIFF函数的基础语法及练习案例

目录
  • 语法格式
  • 参数说明
  • 示例
  • 练习案例
  • 总结

DATEDIFF函数用于返回两个日期的天数

语法格式

DATEDIFF(date1,date2)

参数说明

date1: 比较日期1

date2: 比较日期2

DATEDIFF函数返回date1 - date2的计算结果,date1和date2两个参数需是有效的日期或日期时间值;如果参数传递的是日期时间值,DATEDIFF函数仅将日期部分用于计算,并忽略时间部分(只有值的日期部分参与计算)

示例

-- 1
SELECT DATEDIFF('2022-04-30','2022-04-29');
-- 0
SELECT DATEDIFF('2022-04-30','2022-04-30');
-- -1
SELECT DATEDIFF('2022-04-29','2022-04-30');

-- 0
SELECT DATEDIFF('2022-04-30','2022-04-30 14:00:00');
-- 1
SELECT DATEDIFF('2022-04-30 13:00:00','2022-04-29 14:00:00');
-- 10
SELECT DATEDIFF('2017-06-25 09:34:21', '2017-06-15');

DATEDIFF函数与TIMESTAMPDIFF函数的区别 

1.DATEDIFF函数仅用于返回两个日期的天数,TIMESTAMPDIFF函数用于返回计算两个日期指定单位的时间差(指定单位可以是年,季度,月,星期,天数,小时,分钟,秒等等)

2.对日期差值的计算方式相反

DATEDIFF函数的语法格式: DATEDIFF(start,end)

DATEDIFF函数返回start - end的计算结果

TIMESTAMPDIFF函数的语法格式: TIMESTAMPDIFF(DAY,start,end)

TIMESTAMPDIFF函数返回end - start的计算结果

-- -2
SELECT DATEDIFF('2022-04-28', '2022-04-30');
-- 2
SELECT TIMESTAMPDIFF(DAY,'2022-04-28', '2022-04-30');

3.如果时间是YYYY-MM-DD HH:MM:SS格式,在计算天数差时,TIMESTAMPDIFF使用的是24小时制,即使是23:59:59,也不算做是一天,而DATEDIFF则是直接截取日期的部分相减。那么此时使用两个函数计算出来的天数是不一样的

-- -2
SELECT DATEDIFF('2022-04-30 00:00:00','2022-04-28 23:59:59');
-- 1
SELECT TIMESTAMPDIFF(DAY,'2022-04-28 23:59:59', '2022-04-30 00:00:00');

时间格式为YYYY-MM-DD HH:MM:SS时,使用两个函数的结果是不同的,需要根据具体的业务场景进行选择

扩展补充资料: TIMESTAMPDIFF函数

练习案例

导入数据

DROP TABLE IF EXISTS coupon_collection;
CREATE TABLE coupon_collection(
user_id VARCHAR(8),
collection_date DATE
)
ENGINE = InnoDB
DEFAULT CHARSET = utf8;
INSERT INTO
coupon_collection (user_id,collection_date)
VALUE ('u001','2021-05-01')
 ,('u002','2021-05-01')
 ,('u003','2021-05-02')
 ,('u004','2021-05-02')
 ,('u005','2021-05-03'); 

DROP TABLE IF EXISTS consumption_info;
CREATE TABLE consumption_info(
user_id VARCHAR(8),
consumption_date DATE
)
ENGINE = InnoDB
DEFAULT CHARSET = utf8;
INSERT INTO
consumption_info (user_id,consumption_date)
VALUE ('u002','2021-04-28')
 ,('u001','2021-04-29')
 ,('u001','2021-05-03')
 ,('u003','2021-05-05')
 ,('u005','2021-05-06')
 ,('u001','2021-05-08')
 ,('u004','2021-05-09')
 ,('u006','2021-05-09')
 ,('u003','2021-05-10')
 ,('u002','2021-05-10');

coupon_collection表(电商优惠券领取表)

user_id:用户ID (VARCHAR类型)    collection_date:领取优惠券日期(DATE类型)

consumption_info表(电商消费情况表)

user_id:用户ID (VARCHAR类型)   consumption_date:消费日期 (DATE类型)

问题:用户领取的优惠券次日生效,并在之后的7天内购物时自动生效,使用次数不限。要求获取成功使用优惠券消费的用户及其对应的消费次数(输出格式:user_id,num)

user_id:成功使用消费券消费的用户ID   num:消费次数

SELECT a.user_id, COUNT(collection_date)AS num
FROM coupon_collection AS a
INNER JOIN consumption_info AS b
ON a.user_id = b.user_id
WHERE DATEDIFF(b.consumption_date,a.collection_date) BETWEEN 1 AND 7
GROUP BY a.user_id;

结果展示:

总结

到此这篇关于Mysql中DATEDIFF函数的基础语法及练习案例的文章就介绍到这了,更多相关Mysql DATEDIFF函数内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • MySQL DATEDIFF函数获取两个日期的时间间隔的方法

    描述 返回两个日期之间的时间间隔. 语法 DateDiff(interval, date1, date2 [ ,firstdayofweek[ , firstweekofyear]] ) DateDiff 函数的语法有以下参数: 参数 描述 interval 必选.字符串表达式,表示用于计算 date1 和 date2 之间的时间间隔.有关数值,请参阅"设置"部分. date1, date2 必选.日期表达式.用于计算的两个日期. firstdayofweek 可选.指定星期中第一天的

  • MySQL的时间差函数TIMESTAMPDIFF、DATEDIFF的用法

    时间差函数TIMESTAMPDIFF.DATEDIFF的用法 我们在写sql语句,尤其是存储过程中,会频繁用到对于日期.时间的比较和判断,那么对于这两个时间差比较函数用法做一个举例介绍. datediff函数,返回值是相差的天数,不能定位到小时.分钟和秒. -- 相差2天 select datediff('2018-03-22 09:00:00', '2018-03-20 07:00:00'); TIMESTAMPDIFF函数,有参数设置,可以精确到天(DAY).小时(HOUR),分钟(MINU

  • MySQL的时间差函数(TIMESTAMPDIFF、DATEDIFF)、日期转换计算函数(date_add、day、date_format、str_to_date)

    1. 时间差函数(TIMESTAMPDIFF.DATEDIFF) 需要用MySQL计算时间差,使用TIMESTAMPDIFF.DATEDIFF,记录一下实验结果 --0 select datediff(now(), now()); --2 select datediff('2015-04-22 23:59:00', '2015-04-20 00:00:00'); --2 select datediff('2015-04-22 00:00:00', '2015-04-20 23:59:00');

  • Mysql中DATEDIFF函数的基础语法及练习案例

    目录 语法格式 参数说明 示例 练习案例 总结 DATEDIFF函数用于返回两个日期的天数 语法格式 DATEDIFF(date1,date2) 参数说明 date1: 比较日期1 date2: 比较日期2 DATEDIFF函数返回date1 - date2的计算结果,date1和date2两个参数需是有效的日期或日期时间值;如果参数传递的是日期时间值,DATEDIFF函数仅将日期部分用于计算,并忽略时间部分(只有值的日期部分参与计算) 示例 -- 1 SELECT DATEDIFF('2022

  • 详解MySQL中concat函数的用法(连接字符串)

    MySQL中concat函数 使用方法: CONCAT(str1,str2,-) 返回结果为连接参数产生的字符串.如有任何一个参数为NULL ,则返回值为 NULL. 注意: 如果所有参数均为非二进制字符串,则结果为非二进制字符串. 如果自变量中含有任一二进制字符串,则结果为一个二进制字符串. 一个数字参数被转化为与之相等的二进制字符串格式:若要避免这种情况,可使用显式类型 cast, 例如: SELECT CONCAT(CAST(int_col AS CHAR), char_col) MySQ

  • MySQL中group_concat函数深入理解

    本文通过实例介绍了MySQL中的group_concat函数的使用方法,比如select group_concat(name) . MySQL中group_concat函数 完整的语法如下: group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符']) 基本查询 mysql> select * from aa; +------+------+ | id| name | +------+------+ |1 |

  • 浅谈mysql中concat函数,mysql在字段前/后增加字符串

    MySQL中concat函数 使用方法: CONCAT(str1,str2,-) 返回结果为连接参数产生的字符串.如有任何一个参数为NULL ,则返回值为 NULL. 注意: 如果所有参数均为非二进制字符串,则结果为非二进制字符串. 如果自变量中含有任一二进制字符串,则结果为一个二进制字符串. 一个数字参数被转化为与之相等的二进制字符串格式:若要避免这种情况,可使用显式类型 cast, 例如: SELECT CONCAT(CAST(int_col AS CHAR), char_col) MySQ

  • Mysql中TIMESTAMPDIFF函数的语法与练习案例

    目录 语法结构 参数说明 示例 练习案例 总结 TIMESTAMPDIFF函数用于计算两个日期的时间差 语法结构 TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2) 参数说明 unit: 日期比较返回的时间差单位,常用可选值如下: SECOND:秒 MINUTE:分钟 HOUR:小时 DAY:天 WEEK:星期 MONTH:月 QUARTER:季度 YEAR:年 datetime_expr1: 要比较的日期1 datetime_expr2: 要比较

  • 深入了解MySQL中聚合函数的使用

    目录 什么是聚合函数 SUM 函数 MAX 函数 MIN 函数 AVG 函数 COUNT 函数 聚合函数综合小练习 聚合函数综合练习 -1 聚合函数综合练习 -2 今天的章节我们将要来学习一下 “聚合函数” :首先我们需要学习聚合函数对数据进行统计分析,比如说求最大值.最小值.平均值之类的场景.但是单纯的使用聚合函数,只能做全表范围的统计分析.如果想要把记录分组分别统计,需要使用 “GROUP BY” 和 “HAVING” 这样的分组子句了.关于分组查询的应用,将在下一章节为大家进行讲解.当前章

  • MySQL中时间函数操作大全

    目录 1. 获取系统当前时间 1.1. 获取 YYYY-MM-DD HH:mm:ss 1.2. 获取 YYYY-MM-DD 1.3. 获取 HH:mm:ss 2. 时间加减间隔函数 2.1. DATETIME 类型的加减 2.2. DATE 类型的加减 3. 两个时间的相减 3.1. DATE 类型相减 3.2. TIMESTAMP 类型 附:时间差 datediff() 总结 1. 获取系统当前时间 MySQL 版本为 5.7,详细的时间函数可以参考 MySQL 官方文档 在这里 1.1. 获

  • ASP 中 DateDiff 函数详解 主要实现两日期加减操作

    ASP 中 DateDiff 函数详解DateDiff 函数 描述  返回两个日期之间的时间间隔.  语法  DateDiff(interval, date1, date2 [,firstdayofweek][, firstweekofyear]])  DateDiff 函数的语法有以下参数: 参数 描述  interval 必选.字符串表达式,表示用于计算 date1 和 date2 之间的时间间隔.有关数值,请参阅"设置"部分.  date1, date2 必选.日期表达式.用于计

  • mysql中find_in_set()函数的使用及in()用法详解

    MySQL手册中find_in_set函数的语法解释: FIND_IN_SET(str,strlist) str 要查询的字符串 strlist 字段名 参数以","分隔 如 (1,2,6,8,10,22) 查询字段(strlist)中包含(str)的结果,返回结果为null或记录 假如字符串str在由N个子链组成的字符串列表strlist 中,则返回值的范围在 1 到 N 之间. 一个字符串列表就是一个由一些被 ',' 符号分开的子链组成的字符串.如果第一个参数是一个常数字符串,而第

  • mysql中find_in_set()函数的使用详解

    首先举个例子来说: 有个文章表里面有个type字段,它存储的是文章类型,有 1头条.2推荐.3热点.4图文等等 . 现在有篇文章他既是头条,又是热点,还是图文,type中以 1,3,4 的格式存储.那我们如何用sql查找所有type中有4的图文类型的文章呢?? 这就要我们的 find_in_set 出马的时候到了.以下为引用的内容: select * from article where FIND_IN_SET('4',type) --------------------------------

随机推荐