当前位置:   article > 正文

Mysql 日期函数详解(now、date_add、datediff )_mysql nowdate

mysql nowdate

1 概述

日期时间函数
格式规范
年-月-日,%Y-%m-%d ..
时:分:秒,%H:%i:%S..
特别说明
一周中的第一天是 '周天'(而非 '周一')
select now(),     -- 日期函数 + 时间函数
       sysdate(), -- 日期函数 + 时间函数
       curdate(), -- 日期函数
       curtime(); -- 时间函数
  • 1
  • 2
  • 3
  • 4

2 示例

2.1 获取日期时间各部分

-- 标准日期参数如下:year、month、day ...
select now(),
       date(now()) 日期,
       time(now()) 时间,

       quarter(now()) 季度,
       week(now()),

       year(now()),
       month(now()),
       day(now()),

       hour(now()),
       minute(now()),
       second(now()),
       microsecond(now()) 微妙,

       dayofyear(now()) 一年中的第几天,
       dayofmonth(now()) 一个月中的第几天,
       dayofweek(now()) 一周中的第几天, -- 周天起算
       -- 函数很多,但类似,用的时候 敲代码,看提示 即可。
       last_day(now()) 一个月中的最后一天
;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

2.2 日期时间相加减

1. '单个' 日期时间相加减
   (1) date_add(date, interval int 日期参数)'+'
   (2) date_sub(date, interval int 日期参数)'-' 

2. '两个' 日期时间相加减
   (1) datediff(expr1, expr2)   : 日期差,天数 = expr1 - expr2
   (2) timediff(expr1, expr2)   : 时间差,时分秒 = expr1 - expr2
   (3) timestampdiff(日期参数, 日期1, 日期2): 请注意 = 日期2 - 日期1
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

单个日期时间相加减:date_add() +、date_sub() -

select now(),
       date_add(now(), interval 1 year) 明年,
       date_add(now(), interval 1 day) 明天,
       date_add(now(), interval 1 hour) 一小时后,
       -- 复杂的,敲的时候,看代码提示即可
       date_add(now(), interval '01:15' hour_minute) 一小时十五分钟后,
       date_add(now(), interval '01:15:30' hour_second) 一小时十五分三十秒后,
       date_add(now(), interval '1 01:15:30' day_second) 一天一小时十五分三十秒后,
       
       date_sub(now(), interval 1 year) 前年 -- 格式同上
  from dual;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

两个日期时间相加减:

select datediff('2021-01-02', '2021-01-01') date_diff,  -- 1
       timediff('10:20:30', '08:10:15') time_diff,       -- 02:10:15
       -- 支持标准日期参数
       timestampdiff(day, '2021-01-01', '2021-01-02') timestamp_diff,
       timestampdiff(minute, '2021-01-01 08:10:15', '2021-01-02 10:20:30')  timestamp_diff2
  from dual;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

3 扩展

3.1 now() 和 sysdate() 区别

相同点:都是 日期 + 时间 格式
不同点:(1) now()'执行开始时' 值就得到了
       (2) sysdate() 在函数执行时 '动态获取'
  • 1
  • 2
  • 3

示例1:now() = ‘执行开始时’ 值就得到了

select now(), sleep(3), now();
-- 值一致
2021-01-18 17:07:22		0	2021-01-18 17:07:22
  • 1
  • 2
  • 3

示例2:sysdate() = ‘执行函数时’ 才得到值

select sysdate(), sleep(3), sysdate();
-- 值不同
2021-01-18 17:08:40		0	2021-01-18 17:08:43
  • 1
  • 2
  • 3

3.2 格式转换

3.3 世界协调时间 UTC

1. 世界协调时间 UTC:	Universal Time Coordinated

2. 我国位于 '东八时区',所以本地时间 = UTC 时间 + 8 小时
   (1) UTC 时间在业务涉及多个国家和地区的时候,非常有用
  • 1
  • 2
  • 3
  • 4

示例: now() = utc_timestamp() + 8h

select now(),                           -- 2021-06-16 10:39:51
       utc_date() 'utc_date',           -- 2021-06-16
       utc_time() 'utc_time',           -- 02:39:51
       utc_timestamp() 'utc_timestamp'  -- 2021-06-16 02:39:51
  from dual;
  • 1
  • 2
  • 3
  • 4
  • 5
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/230429?site
推荐阅读
相关标签
  

闽ICP备14008679号