当前位置:网站首页>[Mysql] DATEDIFF函数
[Mysql] DATEDIFF函数
2022-07-30 05:30:00 【iijik55】
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时,使用两个函数的结果是不同的,需要根据具体的业务场景进行选择
练习案例
导入数据
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;
结果展示:

先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦
边栏推荐
- 力扣1047-删除字符串中的所有相邻重复项——栈
- 力扣344-反转字符串——双指针法
- 行业案例|数字化经营底座助力寿险行业转型
- MySQL(3)
- The Golden Circle Rule: Deep Thinking Methods for Successful People
- 力扣20-有效的括号——栈实现
- 罗湖区工匠技能领军人才奖励项目申请指南
- idea设置自动带参数的方法注释(有效)
- I went to meet some successful people worth tens of millions on May 1st, and I have some new ideas and inspirations
- 从驱动表和被驱动表来快速理解MySQL中的内连接和外连接
猜你喜欢

Summary of skills in using ms project2010 project management software

Mysql8.+学习笔记

idea 编译protobuf 文件的设置使用

文档在线化管理系统Confluce使用

MySQL索引常见面试题(2022版)

即刻报名|前沿技术探索:如何让 Spark 更强劲、更灵活

Kyligence 亮相第五届南方信息大会并获评“CIO 优选数字化服务商”

Docker-compose安装mysql

工作效率-十五分钟让你快速学习Markdown语法到精通排版实践备忘

Hexagon_V65_Programmers_Reference_Manual (11)
随机推荐
程序员赚钱实操,手把手教你做付费课程,自媒体,付费文章及付费技术课赚钱
Mysql8.+学习笔记
并发编程复习
Docker-compose安装mysql
微信支付及支付回调
给小白的 PostgreSQL 容器化部署教程(上)
坠落的蚂蚁(北京大学考研机试题)
C language implements highly secure game archives and reads files
pytorch官网中如何选择以及后面的安装和pycharm测试步骤
75. 颜色分类
Hexagon_V65_Programmers_Reference_Manual (12)
22-07-29 西安 分布式事务、Seata
[Redis Master Cultivation Road] Jedis - the basic use of Jedis
MySQL索引从入门到深入学习
mysql基础(4)
An old programmer's summary review of 2020, how to become more awesome in 2021
C语言中的基本库函数(qsort)
从想当亿万富翁到职场、创业、爱情、抑郁、学医学武,我的程序人生
【LeetCode】Day107-除自身以外数组的乘积
成绩排序(华中科技大学考研机试题)(DAY 87)