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的时间差函数(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(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中DATEDIFF函数的基础语法及练习案例

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

  • 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'); -

  • Mysql TIMESTAMPDIFF函数示例详解

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

  • JS的时间格式化和时间戳转换函数示例详解

    JS的时间格式化和时间戳转换函数 //格式化时间 function dateFormat(fmt,date){ var o = { "M+" : date.getMonth()+1, //月份 "d+" : date.getDate(), //日 "h+" : date.getHours(), //小时 "m+" : date.getMinutes(), //分 "s+" : date.getSeconds

  • Python模块glob函数示例详解教程

    目录 本文大纲 支持4个常用的通配符 1)glob()函数 2)iglob()函数 3)escape()函数 总结 本文大纲 glob模块也是Python标准库中一个重要的模块,主要用来查找符合特定规则的目录和文件,并将搜索的到的结果返回到一个列表中.使用这个模块最主要的原因就是,该模块支持几个特殊的正则通配符,用起来贼方便,这个将会在下方为大家进行详细讲解. 支持4个常用的通配符 使用glob模块能够快速查找我们想要的目录和文件,就是由于它支持*.**.? .[ ]这三个通配符,那么它们到底是

  • MySql数据类型教程示例详解

    目录 1.简要概述 2. MySQL数据类型详解 1) 字符串类型 2) 整数类型 3)浮点数类型 4)日期/时间类型 1.简要概述 为什么要开通MySQL这个学习板块呢?因为这是一名数据分析师必要的一项技能.分析数据什么最重要?当然是数据,既然如此!在数据呈现爆发式增长的年代,怎么能够不学学数据库呢?其实这也是很多读者朋友希望看到的,也是他们建议我写的. 难者不会,会者不难!其实网上很多MySQL的总结文章,不可否认,知识点写的都很全,但是呢!这个只是会使用MySQL数据库的朋友的一个查询手册

  • C语言大厂面试技巧及strcpy()函数示例详解

    目录 1.什么是优秀的代码? 2.常见的coding技巧有哪些? 3.以模拟实现strcpy为例 (1)了解strcpy()函数 (2)正片开始(危) 1.第一阶段(面试官:最多5分) 2.第二阶段(面试官:最多7分) 3.第三阶段的代码:(面试官:最多8分) 4.第四阶段(面试官:完美代码!10分!) 1.什么是优秀的代码? 1. 代码运行正常 2. bug很少 3. 效率高 4. 可读性高 5. 可维护性高 6. 注释清晰 7. 文档齐全 2.常见的coding技巧有哪些? 1. 使用ass

  • UE4 Unlua 调用异步蓝图节点AIMoveTo函数示例详解

    目录 引言 源码分析 Unlua代码实现 引言 异步蓝图节点:在蓝图节点的右上角有时钟图标. 注意:异步节点可以在EventGraph/Macros中使用,但是无法在蓝图函数中使用. AIMoveTo节点:实现AI自主寻路,且能异步回调执行成功或失败的委托函数,且返回移动结果枚举值. 源码分析 AIMoveTo 蓝图节点对应C++的基类为 UK2Node_AIMoveToUK2Node_AIMoveTo 继承至异步Task节点基类 UK2Node_BaseAsyncTask,并在构造函数中完成了

  • numpy中hstack vstack stack concatenate函数示例详解

    目录 大纲 1.concatenate() 2.stack() 3.vstack() 4.hstack() 5.tf中的stack() 大纲 本文主要介绍一下numpy中的几个常用函数,包括hstack().vstack().stack().concatenate(). 1.concatenate() 我们先来介绍最全能的concatenate()函数,后面的几个函数其实都可以用concatenate()函数来进行等价操作. concatenate()函数根据指定的维度,对一个元组.列表中的li

  • MySQL获得当前日期时间函数示例详解

    获得当前日期+时间(date + time)函数:now() mysql> select now(); +---------------------+ | now() | +---------------------+ | 2008-08-08 22:20:46 | +---------------------+ 获得当前日期+时间(date + time)函数:sysdate() sysdate() 日期时间函数跟 now() 类似,不同之处在于:now() 在执行开始时值就得到了, sysd

  • Mysql using 用法示例详解

    目录 示例 第一种 第二种 第三种 示例 在平时,我们做关联表查询的时候一般是这样的 select * from 表1 inner join 表2 on 表1.相同的列=表2.相同的列; 然后可以改成这样也是同样的效果 select 表1的列 from 表1 inner join 表2 on 表1.相同的列=表2 .相同的列 然后还可以改成这样 select * from 表1 inner join 表2 using(相同的列); 第一种 SELECT * FROM type,article w

随机推荐