【无标题】Mysql 日期函数详解(now、date_add、datediff )

文章目录
1 概述
2 示例
2.1 获取日期时间各部分
2.2 日期时间相加减
3 扩展
3.1 now() 和 sysdate() 区别
3.2 格式转换
3.3 世界协调时间 UTC
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 格式转换
Mysql 数据类型转换详解 (convert、cast)
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;
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值