zoukankan      html  css  js  c++  java
  • SQL时间计算timediff,timestampdiff,datediff,日期获取interval

    时间差函数:

    timestampdiff

    语法:timestampdiff(interval, datetime1,datetime2)

    结果:返回(时间2-时间1)的时间差,结果单位由interval参数给出。

    • frac_second 毫秒(低版本不支持,用second,再除于1000)
    • second 秒
    • minute 分钟
    • hour 小时
    • day 天
    • week 周
    • month 月
    • quarter 季度
    • year 年

      注意:MySQL 5.6之后才支持毫秒的记录和计算,如果是之前的版本,最好是在数据库除datetime类型之外的字段,再建立用于存储毫秒的int字段,然后自己进行转换计算。

    # 所有格式
    SELECT TIMESTAMPDIFF(FRAC_SECOND,'2012-10-01','2013-01-13'); # 暂不支持
    SELECT TIMESTAMPDIFF(SECOND,'2012-10-01','2013-01-13'); # 8985600
    SELECT TIMESTAMPDIFF(MINUTE,'2012-10-01','2013-01-13'); # 149760
    SELECT TIMESTAMPDIFF(HOUR,'2012-10-01','2013-01-13'); # 2496
    SELECT TIMESTAMPDIFF(DAY,'2012-10-01','2013-01-13'); # 104
    SELECT TIMESTAMPDIFF(WEEK,'2012-10-01','2013-01-13'); # 14
    SELECT TIMESTAMPDIFF(MONTH,'2012-10-01','2013-01-13'); # 3
    SELECT TIMESTAMPDIFF(QUARTER,'2012-10-01','2013-01-13'); # 1
    SELECT TIMESTAMPDIFF(YEAR,'2012-10-01','2013-01-13'); # 0

    datediff

    语法:传入两个日期参数,比较DAY天数,第一个参数减去第二个参数的天数值

    SELECT DATEDIFF('2013-01-13','2012-10-01');# 104

    timediff

    语法:timediff(time1,time2)

    结果:返回两个时间相减得到的差值,time1-time2

    SELECT TIMEDIFF('2018-05-21 14:51:43','2018-05-19 12:54:43');# 49:57:00

    其他日期函数

    • now()函数返回的是当前时间的年月日时分秒
    • curdate()函数返回的是年月日信息
    • curtime()函数返回的是当前时间的时分秒信息
    • 对一个包含年月日时分秒日期格式化成年月日日期,可以使用DATE(time)函数
      # 其他日期函数
      SELECT NOW(); # 2018-05-21 14:41:00
      SELECT CURDATE(); # 2018-05-21
      SELECT CURTIME(); # 14:41:38
      SELECT DATE(NOW()); # 2018-05-21
      SELECT SYSDATE(); # 2018-05-21 14:47:11
      SELECT CURRENT_TIME(); # 14:51:30
      SELECT CURRENT_TIMESTAMP; # 2018-05-21 14:51:37
      SELECT CURRENT_TIMESTAMP(); # 2018-05-21 14:51:43

      注意:now()与sysdate()类似,只不过now()在执行开始时就获取,而sysdate()可以在函数执行时动态获取。

    • interval的说明:

      1、当函数使用时,即interval(),为比较函数,如:interval(10,1,3,5,7); 结果为4;

      原理:10为被比较数,后面1,3,5,7为比较数,将后面四个依次与10比较,看后面数字组有多少个少于10,则返回其个数。前提是后面数字组为从小到大排列,否则返回结果0。

      2、当关键词使用时,表示为设置时间间隔,常用在date_add()与date_sub()函数里,如:interval 1 day ,解释为将时间间隔设置为1天。

      本月第一天

      select date_add(curdate(), interval - day(curdate()) + 1 day);

      本月最后一天

      select last_day(curdate());

      上月第一天 

      select date_add(curdate()-day(curdate())+1,interval -1 month);

      上月最后一天

      select last_day(date_sub(now(),interval 1 month));

      下月第一天

      select date_add(curdate()-day(curdate())+1,interval 1 month);

      下月最后一天

      select last_day(date_sub(now(),interval -1 month));

      本月天数

      select day(last_day(curdate()));

      上月今天的当前日期

      select date_sub(curdate(), interval 1 month);

      上月今天的当前日期

      select date_sub(curdate(), interval 1 month);

      上月今天的当前时间(时间戳) 

      select unix_timestamp(date_sub(now(),interval 1 month));

      获取当前时间与上个月之间的天数

      select datediff(curdate(), date_sub(curdate(), interval 1 month));

      作者:dazzlingly

      链接:https://www.jianshu.com/p/1de4b0dfbce0
      来源:简书
      著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  • 相关阅读:
    集合类... 分类: java 20091102 14:22 193人阅读 评论(0) 收藏
    全选复选框 分类: 网页编程【html、js】 20091102 20:56 257人阅读 评论(0) 收藏
    数组自带的push方法 分类: 网页编程【html、js】 20091102 20:51 235人阅读 评论(0) 收藏
    Scanner类 分类: java 20091102 14:18 188人阅读 评论(0) 收藏
    计算阶乘之和 分类: java 20091102 14:12 206人阅读 评论(0) 收藏
    冒泡排序... 分类: java 20091102 14:09 224人阅读 评论(0) 收藏
    获得html 属性值的集中方法 分类: 网页编程【html、js】 20090908 12:32 861人阅读 评论(1) 收藏
    OpenAPI系列:汇总
    OpenAPI系列: 二、资源
    软件生存周期文档系列 之 9.开发进度月报
  • 原文地址:https://www.cnblogs.com/87060524test/p/11647976.html
Copyright © 2011-2022 走看看