select now(), -- 日期函数 + 时间函数
sysdate(), -- 日期函数 + 时间函数
curdate(), -- 日期函数
curtime(); -- 时间函数
-- 标准日期参数如下: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. '单个' 日期时间相加减
(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;
相同点:都是 日期 + 时间 格式
不同点:(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
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;