oracle日期函数

  • 格式化, 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值