Mysql 日期和时间加减及日期计算相差年、月、周、日数整理 |
您所在的位置:网站首页 › 月份换算成天数 › Mysql 日期和时间加减及日期计算相差年、月、周、日数整理 |
Mysql 日期和时间加减及日期计算相差年、月、周、日数整理
1、日期和时间加减
select now() -- 获取当前具体的日期和时间 2019-11-13 16:38:20 select curdate() -- 获取当前日期 2019-11-13 select curtime() -- 获取当前时间 6:38:20 1.1、MySQL加减某个时间间隔 设置当前日期变量 set @dt = now() -- 设置当前日期 select @dt -- 查询变量值 加减某个时间间隔函数date_add()与date_sub() date_add('某个日期时间',interval 1 时间种类名); 示例: select date_add(@dt, interval 1 year); //加1年 select date_add(@dt, interval 1 month); //加1月 year:年,quarter:季,month:月,week:周,day:天,hour:小时,minuter:分钟,second:秒,microsecond:毫秒 注:也可以不用变量,直接加减某个时间,如:select date_add('2019-01-01', interval 1 day); select date_add(now(), interval 1 day); -- 加1天 select date_add(now(), interval 1 hour); -- 加1小时 select date_add(now(), interval 1 minute); -- 加1分钟 select date_add(now(), interval 1 second); -- 加1秒 select date_add(now(), interval 1 microsecond); -- 加1毫秒 select date_add(now(), interval 1 week); -- 加1周 select date_add(now(), interval 1 month); -- 加1月 select date_add(now(), interval 1 quarter); -- 加1季 select date_add(now(), interval 1 year); -- 加1年 MySQL adddate(), addtime()函数,可以用date_add() 来替代。 此外,MySQL 为日期减去一个时间间隔:date_sub() MySQL date_sub() 日期时间函数 和date_add() 用法一致。 MySQL 中subdate(),subtime()函数,建议,用date_sub()来替代。 1.2、日期相减 datediff(date1,date2):两个日期相减,date1减去date2得到相减之后的天数 select datediff('20191010','20191001') -- 9 timediff(time1,time2):两个时间相减 time1减time2,返回差值。 select timediff('2019-06-03 12:30:00', '2019-06-03 12:29:30') -- 00:00:30 等价于 select timediff('12:30:00', '12:29:30') -- 00:00:30 2、日期计算相差年、月、周、日数整理2.1、相差年数 SELECT NOW() 当前日期, DATE_ADD(NOW(), INTERVAL - 800 DAY) 历史日期, TIMESTAMPDIFF(YEAR,DATE_ADD(NOW(), INTERVAL - 800 DAY),NOW()) AS 相差年; 当前日期 |历史日期 |相差年 | --------------------|--------------------|----| 2019-11-13 17:26:30 |2017-09-04 17:26:30 |2 | 2.2、相差月数 SELECT NOW() 当前日期, DATE_ADD(NOW(), INTERVAL - 800 DAY) 历史日期, TIMESTAMPDIFF(MONTH,DATE_ADD(NOW(), INTERVAL - 800 DAY),NOW()) AS 相差月; 当前日期 |历史日期 |相差月 | --------------------|--------------------|----| 2019-11-13 17:27:49 |2017-09-04 17:27:49 |26 | 2.3、相差周数 SELECT NOW() 当前日期, DATE_ADD(NOW(), INTERVAL - 800 DAY) 历史日期, TIMESTAMPDIFF(WEEK,DATE_ADD(NOW(), INTERVAL - 800 DAY),NOW()) AS 相差周; 当前日期 |历史日期 |相差周 | --------------------|--------------------|----| 2019-11-13 17:29:11 |2017-09-04 17:29:11 |114 | 2.4、相差天数 整理了一下三种方式: 1)、方式一 SELECT NOW() 当前日期, DATE_ADD(NOW(), INTERVAL - 800 DAY) 历史日期, TIMESTAMPDIFF(DAY,DATE_ADD(NOW(), INTERVAL - 800 DAY),NOW()) AS 相差日; 当前日期 |历史日期 |相差日 | --------------------|--------------------|----- ----- | 2019-11-13 17:31:45 |2017-09-04 17:31:45 |800 | 2)、方式二 SELECT TO_DAYS('2019-09-10') - TO_DAYS('2018-09-01') AS 相差天数; 相差天数 | ----- ----- | 374 | 3)、方式三 SELECT DATEDIFF(NOW(), '2019-09-01') AS 相差天数; 相差天数 | ----- ----- | 73 | 参考:https://blog.csdn.net/qq_39588003/article/details/90758827 https://blog.csdn.net/jiahao1186/article/details/82586889 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |