目录

  • 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函数相关推荐

  1. mysql 日期 计算 时间差 天数差

    mysql计算两个日期的时间差 第一种:TIMESTAMPDIFF函数 三个参数.第一个参数是比较的类型:FRAC_SECOND.SECOND. MINUTE. HOUR. DAY. WEEK. MO ...

  2. Mysql日期差函数,Mysql选择两个日期字段相差大于或小于一定时间

     SELECT * from table where TIMESTAMPDIFF(type,pretime,latertime)>100 TIMESTAMPDIFF函数,需要三个参数,typ ...

  3. mysql timestamp 差值_MySQL中TIMESTAMPDIFF和TIMESTAMPADD函数的用法(两个日期之间的差值)...

    MySQL中TIMESTAMPDIFF和TIMESTAMPADD函数的用法 在应用时,经常要使用这两个函数TIMESTAMPDIFF和TIMESTAMPADD. 一,TIMESTAMPDIFF 语法: ...

  4. Mysql日期差的函数

    SELECT * from table where TIMESTAMPDIFF(type,pretime,latertime)>1 字段意思: TIMESTAMPDIFF()函数名 type,比 ...

  5. MySQL日期与时间差

    MySQL的日期函数,当天日期,上月最后一天,第一天 -- 当前日期,当天是2022年1月6日,则返回 2022-01-06 select curdate(); -- 当前日期的天数,当天是2022年 ...

  6. 使用EXCEL计算日期差时间差

    1.计算两个日期之间的天数 将两个日期直接相减 2.使用日期相关函数来完成

  7. db2数据库sql中计算两个时间字段的差值用到timestampdiff函数

    timestampdiff(2,char(timestamp(表.endTime)-timestamp(表.starteTime)))

  8. Mysql日期函数使用大全

    为什么80%的码农都做不了架构师?>>>    1.1 获得当前日期+时间(date + time)函数:now() 除了 now() 函数能获得当前的日期时间外,MySQL 中还有 ...

  9. MySQL日期时间处理函数

    -- MySQL日期时间处理函数 SELECT NOW() FROM DUAL;-- 当前日期时间:2017-05-12 11:41:47 -- 在MySQL里也存在和Oracle里类似的dual虚拟 ...

最新文章

  1. java创建主键自增表_oracle创建表时设置自增主键
  2. Android中解析XML
  3. 测试思想-好东西与大家分享-1
  4. boost::endian::endian_load的测试程序
  5. MyBatis 实际使用案例-核心配置解读
  6. Centos7设置静态IP后无法上网的解决方法
  7. java Linux icepdf,ICEpdf 6.1.1发布,Java的PDF类库
  8. NLP+词法系列(二)︱中文分词技术简述、深度学习分词实践(CIPS2016、超多案例)
  9. sha1校验工具android,安卓md5校验工具下载
  10. 华硕电脑的触摸板关闭
  11. 【硬石科技】电机系列教学(基于STM32)——舵机的控制
  12. HDU 5977 Garden of Eden (树形dp+快速沃尔什变换FWT)
  13. 三角函数到傅立叶级数
  14. 电脑开的热定手机连不上解决方法
  15. dos下拷贝服务器文件命令行,win7在DOS环境下怎么使用copy命令?使用copy命令复制文件的方法...
  16. C语言——scanf()函数的具体详解
  17. 学习MonoRail MVC
  18. 盘点Sui生态20个值得关注的项目,其中8个已进入测试阶段
  19. spread运算符_JavaScript中的Spread运算符有什么用?
  20. 为什么要通过金融直播来获客?这可以从其优势得知

热门文章

  1. Schedule(贪心,任务调度)
  2. Android应用中实现系统“分享”接口
  3. 基于Python的微信朋友圈数据可视化分析之个性签名
  4. Golang bytes源码分析
  5. 笨方法学python3怎么样_笨办法学Python3
  6. 备份指南——Ghost前的系统配置大全(转)
  7. The type javax.servlet.http.HttpServletRequest cannot be resolved. It is indirectly referenced fro
  8. 学习Servlet2
  9. 宁夏中卫市:新一代云计算走向世界
  10. 拉肚子差评回复模板_女子吃外卖烧烤后拉肚子给差评,老板电话骂人后还说“欧耶”...