MySQL日期差,时间差,使用DATEDIFF、TIMESTAMPDIFF函数
目录
- DATEDIFF
- TIMESTAMPDIFF
DATEDIFF
需求:查询截至于2021年7月15号的前10天的用户订单记录(不包括15号)
像这种对于一个具体日期往前或者往后推多少多少天的sql查询,我们一般能想到的可能是用具体的一个临界日期来设置条件:
2021.7.15号的前10天就是2021.7.5号,然后sql可以这么写:
select * from userOrder where bugDate > '2021-07-05' and bugDate < '2021-07-15'# 或者用between and 也可以
这样也是可行的,但是呢,需要自己演推出10天前的具体日期,但是实际的开发中往往是动态的,不仅仅只要7.15号的前10天,还有可能是其他日子,7.16前10天,7.30前10天·······
那就需要用上MySQL一个函数-------DATEDIFF
语法格式:里面就两个参数,都是放的时间,然后它会算出两个时间差
# 语法格式
DATEDIFF('2010-6-22','2010-6-28')举个例子: 一正一反
SELECT DATEDIFF('2010-6-22','2010-6-20') AS DiffDate from dual
SELECT DATEDIFF('2010-6-20','2010-6-22') AS DiffDate from dual
仔细观察这两副图:左大右小是正数,左小右大是负数,然后那个问题就可以用这个函数解决了:
## 查询截至于2021年7月15号的前10天的用户订单记录(不包括15号)
select * from userOrder where DATEDIFF(bugDate,'2021-07-15') < 4 and ('2021-07-15',bugDate) >0
重点!重点!重点!!!!
很多人会漏了一个小细节------------------------------>>>>>>>>>>>>>>>>
这里提一句,为什么还要加一个大于0的条件:因为 左小右大是负数 比如2021-07-16 是小于0的,如果没加它也会查出来,在顺带说一句,datediff函数,返回值是相差的天数,不能定位到小时、分钟和秒。
要是暂时没理解,建议自己去数据库造数据查一遍就很块理解了
TIMESTAMPDIFF
需求:(是上一个DATEDIFF的需求升级版)
查询截至于2021年7月15号的前2年的用户订单记录(不包括15号)
这个需求升级的地方在于时间范围的计量单位变了,若是用原先的做法也不是不可以,算一下2年有多少天,然后照样用datediff做,但是应该都不会这样去玩吧,所以TIMESTAMPDIFF函数了解一下,可以说是上一个的升级版。
**语法格式:**里面三个参数,一个计量单位(年、月、日·····),一个时间、一个时间
TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2)MICROSECOND 微秒
SECOND 秒
MINUTE 分钟
HOUR 小时
DAY 天
WEEK 周
MONTH 月份
QUARTER
YEAR 年份
直接上例子:
SELECT TIMESTAMPDIFF(MONTH, '2022-10-04' , '2022-12-04') a ,TIMESTAMPDIFF(MONTH, '2022-10-05' , '2022-12-04') b from dual
参数是MONTH,计算两个时间相差多少个月,注意,它算的是满月,如上图,结束时间都是4号,但是开始时间一个是4号一个是5号,结果是不一样的,但是如果你是2个月多6天7天,它结果还是算2个月的,所以它只算满月。
说一个实用的,我们可以用year参数来算自己的岁数:
SELECT TIMESTAMPDIFF(YEAR, '2000-9-27' , now()) age from dual;
如果碰上需要时分秒,也可以加上,像这样:
SELECT TIMESTAMPDIFF(MINUTE , '2000-9-27 05:33:00' , '2000-9-27 05:43:00') age from dual;
MySQL日期差,时间差,使用DATEDIFF、TIMESTAMPDIFF函数相关推荐
- mysql 日期 计算 时间差 天数差
mysql计算两个日期的时间差 第一种:TIMESTAMPDIFF函数 三个参数.第一个参数是比较的类型:FRAC_SECOND.SECOND. MINUTE. HOUR. DAY. WEEK. MO ...
- Mysql日期差函数,Mysql选择两个日期字段相差大于或小于一定时间
SELECT * from table where TIMESTAMPDIFF(type,pretime,latertime)>100 TIMESTAMPDIFF函数,需要三个参数,typ ...
- mysql timestamp 差值_MySQL中TIMESTAMPDIFF和TIMESTAMPADD函数的用法(两个日期之间的差值)...
MySQL中TIMESTAMPDIFF和TIMESTAMPADD函数的用法 在应用时,经常要使用这两个函数TIMESTAMPDIFF和TIMESTAMPADD. 一,TIMESTAMPDIFF 语法: ...
- Mysql日期差的函数
SELECT * from table where TIMESTAMPDIFF(type,pretime,latertime)>1 字段意思: TIMESTAMPDIFF()函数名 type,比 ...
- MySQL日期与时间差
MySQL的日期函数,当天日期,上月最后一天,第一天 -- 当前日期,当天是2022年1月6日,则返回 2022-01-06 select curdate(); -- 当前日期的天数,当天是2022年 ...
- 使用EXCEL计算日期差时间差
1.计算两个日期之间的天数 将两个日期直接相减 2.使用日期相关函数来完成
- db2数据库sql中计算两个时间字段的差值用到timestampdiff函数
timestampdiff(2,char(timestamp(表.endTime)-timestamp(表.starteTime)))
- Mysql日期函数使用大全
为什么80%的码农都做不了架构师?>>> 1.1 获得当前日期+时间(date + time)函数:now() 除了 now() 函数能获得当前的日期时间外,MySQL 中还有 ...
- MySQL日期时间处理函数
-- MySQL日期时间处理函数 SELECT NOW() FROM DUAL;-- 当前日期时间:2017-05-12 11:41:47 -- 在MySQL里也存在和Oracle里类似的dual虚拟 ...
最新文章
- java创建主键自增表_oracle创建表时设置自增主键
- Android中解析XML
- 测试思想-好东西与大家分享-1
- boost::endian::endian_load的测试程序
- MyBatis 实际使用案例-核心配置解读
- Centos7设置静态IP后无法上网的解决方法
- java Linux icepdf,ICEpdf 6.1.1发布,Java的PDF类库
- NLP+词法系列(二)︱中文分词技术简述、深度学习分词实践(CIPS2016、超多案例)
- sha1校验工具android,安卓md5校验工具下载
- 华硕电脑的触摸板关闭
- 【硬石科技】电机系列教学(基于STM32)——舵机的控制
- HDU 5977 Garden of Eden (树形dp+快速沃尔什变换FWT)
- 三角函数到傅立叶级数
- 电脑开的热定手机连不上解决方法
- dos下拷贝服务器文件命令行,win7在DOS环境下怎么使用copy命令?使用copy命令复制文件的方法...
- C语言——scanf()函数的具体详解
- 学习MonoRail MVC
- 盘点Sui生态20个值得关注的项目,其中8个已进入测试阶段
- spread运算符_JavaScript中的Spread运算符有什么用?
- 为什么要通过金融直播来获客?这可以从其优势得知
热门文章
- Schedule(贪心,任务调度)
- Android应用中实现系统“分享”接口
- 基于Python的微信朋友圈数据可视化分析之个性签名
- Golang bytes源码分析
- 笨方法学python3怎么样_笨办法学Python3
- 备份指南——Ghost前的系统配置大全(转)
- The type javax.servlet.http.HttpServletRequest cannot be resolved. It is indirectly referenced fro
- 学习Servlet2
- 宁夏中卫市:新一代云计算走向世界
- 拉肚子差评回复模板_女子吃外卖烧烤后拉肚子给差评,老板电话骂人后还说“欧耶”...