Oracle笔记 之 日期时间函数

从时间(日期)获取信息

–获取年份 2011
select extract(year from date ‘2011-05-17’) year from dual;
–获取月份 5
select extract(month from date ‘2011-05-17’) month from dual;
–获取日 17
select extract(day from date ‘2011-05-17’) day from dual;
–获取小时 12
select extract(hour from timestamp ‘2011-05-17 12:14:16’) day from dual;
–获取分 14
select extract(minute from timestamp ‘2011-05-17 12:14:16’) day from dual;
–获取秒 16
select extract(second from timestamp ‘2011-05-17 12:14:16’) day from dual;

TO_CHAR(X [,FORMAT])

将X按FORMAT格式转换成字符串。
X是一个日期,FORMAT是一个规定了X采用何种格式转换的格式字符串。
各种格式介绍如下:

周 (W)

W 的含义是一个月的第几周。是按照ORACLE自定义的标准周来返回周数。
IW是ISO标准周,它的含义是ISO标准周以周别为“主线”,每年最多可以有53个周别,但是每年至少要包含52个周别;如果一年当中第52周别之后至当年的12月31日之间,还有大于或等于4天的话,则定为当年的第53周,否则剩余这些天数被归为下一年的第1周;如果在不足52周别的话,则以下一年的时间来补;每周固定的从周一开始作为本周的第1天,到周日作为本周的第7天;比如:在Oracle中 2012年01月01号依然属于IW周别2011年的第52周的第7天。这个用到的比较多。
WW是ORACLE自定义的标准周,它的含义是每年的1月1日作为当年的第一周的第一天(不管当年的1月1日是星期几);比如:2014年01年01是周三,在Oracle中被定义为2014年WW的第一周的第一天。一般很少用到。
FMWW该年1月1号(不考虑属星期几)开始至该年该一个星期日为第一周,第二周是从该年第一个星期开始算(这与IW算法相同)一年的最后一周以该年的12月31号做为截止。

–本月第几周 5
select to_char(sysdate, ‘w’) from dual;

–ISO标准周 01
select to_char(sysdate-, ‘iw’) from dual;

–Oracle标准周 53
select to_char(sysdate, ‘ww’) from dual;

–实际周 53
select to_char(sysdate, ‘FMWW’) from dual;

年 (Y)

–末位数字 0
select to_char(sysdate, ‘y’) from dual;

—最后两位数字 20
select to_char(sysdate, ‘yy’) from dual;

—最后三位数字 020
select to_char(sysdate, ‘yyy’) from dual;

—最后四位数字 2020
select to_char(sysdate, ‘yyyy’) from dual;

–英文年份 twenty twenty
select to_char(sysdate, ‘year’) from dual;

季节 (Q)

–第几季度 4
select to_char(sysdate, ‘q’) from dual;

月份 (M)

–月份 12
select to_char(sysdate, ‘mm’) from dual;
–英文简称 dec
select to_char(sysdate, ‘mon’) from dual;
–英文全称 december
select to_char(sysdate, ‘month’) from dual;

日期 (D)

–本周第几日(上周末为本周第一天) 4
select to_char(sysdate, ‘d’) from dual;
–本月第几日 30
select to_char(sysdate, ‘dd’) from dual;
–本年第几日 365
select to_char(sysdate, ‘ddd’) from dual;
–英文简写周日 wed
select to_char(sysdate, ‘dy’) from dual;
–英文全写周日 wednesday
select to_char(sysdate, ‘day’) from dual;
–英文本月第几日 thirty
select to_char(sysdate, ‘ddsp’) from dual;
–英文本月第几日 thirtieth
select to_char(sysdate, ‘ddspth’) from dual;

时钟(H)

–小时 12进制 10
select to_char(sysdate + 0.5, ‘hh’) from dual;
–小时 24进制 10
select to_char(sysdate + 0.5, ‘hh24’) from dual;

分钟 (M)

–分钟 45
select to_char(sysdate, ‘mi’) from dual;

秒钟 (S)

–秒钟 55
select to_char(sysdate, ‘ss’) from dual;

获取当前时间(日期)字符串

–分隔符没有具体要求
–2020-12-30 10:48:01
select to_char(sysdate, ‘yyyy-mm-dd hh24:mi:ss’) from dual;
–2020/12/30 10:48:01
select to_char(sysdate, ‘yyyy/mm/dd hh24:mi:ss’) from dual;
–20201230 104801
select to_char(sysdate, ‘yyyymmdd hh24miss’) from dual;

公元元年到现在的时间(小时)

–数字字符 2459214
select to_char(sysdate, ‘j’) from dual;
–英文字符 two million four hundred fifty-nine thousand two hundred fourteen
select to_char(sysdate, ‘jsp’) from dual;

TO_date(X [,FORMAT])

字符串转日期

–yyyy(或者yy)代表年份,mm代表月份,dd代表日,hh代表12进制时钟,hh24代表24进制时钟,mi代表分钟,ss代表秒钟
–注意如果使用hh时钟字段不能大于12
select to_date(‘20201230 20:21:22’, ‘yymmdd hh24:mi:ss’) from dual;
select to_date(‘20201230 20:21:22’, ‘yyyymmdd hh24:mi:ss’) from dual;

获取空日期格式

select to_date(null) from dual;

计算日期差

–30
select floor(sysdate - to_date(‘20201130’, ‘yyyymmdd’)) from dual;

求n天后的时间

–5天后的时间
select sysdate + 5 from dual;

求本月最后一天

–2020-11-30 10:59:30
select last_day(sysdate - 40) from dual;

求下一个周n的时间

–n between 1 and 7 正整数
select next_day(sysdate, 7) from dual;

计算月份差

–2.6599563172043
select months_between(sysdate, to_date(‘20201010’, ‘yyyymmdd’)) from dual;

日期函数

请注意round和trunc的区别

round

–2020-05-14 12:21:34 2020-05-15 2020-01-01 2020-05-01 2020-05-17
–时间,日期,年份,月份,周末
select to_date(‘20200514’, ‘yyyymmdd’),
round(to_date(‘20200514’, ‘yyyymmdd’)),
round(to_date(‘20200514’, ‘yyyymmdd’), ‘year’),
round(to_date(‘20200514’, ‘yyyymmdd’), ‘month’),
round(to_date(‘20200514’, ‘yyyymmdd’), ‘day’)
from dual;

trunc

–2020-05-14 12:21:34 2020-05-14 2020-01-01 2020-05-01 2020-05-10
–时间,日期,年份,月份,周末
select to_date(‘20200514’, ‘yyyymmdd’),
trunc(to_date(‘20200514’, ‘yyyymmdd’)),
trunc(to_date(‘20200514’, ‘yyyymmdd’), ‘year’),
trunc(to_date(‘20200514’, ‘yyyymmdd’), ‘month’),
trunc(to_date(‘20200514’, ‘yyyymmdd’), ‘day’)
from dual;

greatest

select greatest(‘20200514’, ‘2020-05-14’, ‘30-2月-24’) from dual

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值