- 格式化, to_char to_date
-- sysdate: 2018-11-06 14:52:31
to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss') -- 2018-11-06 14:52:31
to_char(sysdate, 'hh ddd dy day q w ww')
hh 02小时
ddd 一年中第310周
dy 星期二
day 星期二
q 第4季度
w 一月的第1周
ww 一年的第45周
-- 英语星期几
alter session set nls_date_language = 'american';
to_char(sysdate, 'dy') -- tue
to_char(sysdate, 'day') -- tuesday
to_char(sysdate, 'day', 'nls_date_language=american') -- tuesday
- 加/减时间,add_months
-- sysdate: 2018-11-06 ...
add_months(sysdate, 14) -- 2020-01-06
-- 实现add_months
to_date(
(to_char(sysdate, 'yyyy') + trunc((to_char(sysdate, 'mm') + 14) / 12))
|| '-' ||
mod((to_char(sysdate, 'mm') + 14), 12)
|| to_char(sysdate, '-dd hh24:mi:ss'),
'yyyy-mm-dd hh24:mi:ss'
)
sysdate + 10 * 365 -- 10年后, 不准确, 一年的天数不固定
sysdate +/- 10 -- 加/减10天
sysdate + 10 / 24 / 60 -- 加10分钟
- months_between
months_between(sysdate, sysdate - 50) // 1.645..., 相差的月数
sysdate - (sysdate - 60/24) // 2.5, 相差的天数
- next_day last_day
-- 一周的第一天是周日,next_day的范围是接下来的7天,不是下周
-- sysdate: 2018-11-06 ..., 周三
next_day(sysdate, 4) -- 2018-11-07, 本周的4th
next_day(sysdate, 1) -- 2018-11-11, 下周的first
-- 一个月的最后一天
last_day(sysdate) -- 2018-11-30 ...
- round trunc(date, fmt)
-- sysdate: 2018-11-06 14:52:31
round(sysdate, 'hh') -- 2018-11-06 15:00:00, 过半进位
round(sysdate, 'yy') -- 2019-01-01 00:00:00
trunc(sysdate, 'hh') -- 2018-11-06 14:00:00
trunc(sysdate, 'yy') -- 2018-01-01 00:00:00
参考:
https://www.cnblogs.com/chuncn/archive/2009/04/29/1381282.html