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

1 概述

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

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()) 一个月中的最后一天
;

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

单个日期时间相加减: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;

两个日期时间相加减:

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;

3 扩展

3.1 now() 和 sysdate() 区别

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

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

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

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

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

3.2 格式转换

3.3 世界协调时间 UTC

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

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

示例: 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;
  • 4
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鱼丸丶粗面

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值