2022-06-28 oracle 时间函数

在学习Oracle数据库的过程中,难免会有一些截取年月日或者获取两个日期之间的具体时间间隔或者获取interval类型特定部分的相关问题,那么下面的extract()就将派上用场了!

oracle中extract()函数从oracle 9i中引入的,主要作用于一个date或者interval类型中截取特定的部分

extract()语法如下:

extract (

{ year | month | day | hour | minute |second | 某一时区 }

from { date类型值 |interval类型值} )

要点一:extract()只能从一个date类型中截取年月日

实例:

Select extract(year from sysdate) year ,extract(month from sysdate) month,extract(day from sysdate) day from dual;

结果:

Year 2019

Month 4

Day 17

要点二:extract()获取两个日期之间的具体时间间隔

实例:

Select extract(year from to_date(‘2009-05-25’,’yyyy-mm-dd’))
– extract(year from to_date(‘2008-04-2’,’yyyy-mm-dd’)) years,
extract(monthfrom to_date(‘2009-05-25’,’yyyy-mm-dd’))
– extract(month from to_date(‘2008-04-2’,’yyyy-mm-dd’))month,
extract(day from to_date(‘2009-05-25’,’yyyy-mm-dd’))
– extract(day fromto_date(‘2008-04-2’,’yyyy-mm-dd’)) day from dual;

结果:

Years 1

Month 1

Day 23

要点三:获取interval类型特定部分

实例:

Select extract(year from interval ‘21’ year)year from dual

结果:

Year 21

以上三要点为重点!!!

加法

select sysdate,add_months(sysdate,12) from dual; –加1年

select sysdate,add_months(sysdate,1) from dual; –加1月

select sysdate,to_char(sysdate+7,’yyyy-mm-dd HH24:MI:SS’) from dual; –加1星期

select sysdate,to_char(sysdate+1,’yyyy-mm-dd HH24:MI:SS’) from dual; –加1天

select sysdate,to_char(sysdate+1/24,’yyyy-mm-dd HH24:MI:SS’) from dual; –加1小时

select sysdate,to_char(sysdate+1/24/60,’yyyy-mm-dd HH24:MI:SS’) from dual; –加1分钟

select sysdate,to_char(sysdate+1/24/60/60,’yyyy-mm-dd HH24:MI:SS’) from dual; –加1秒

减法

select sysdate,add_months(sysdate,-12) from dual; –减1年

select sysdate,add_months(sysdate,-1) from dual; –减1月

select sysdate,to_char(sysdate-7,’yyyy-mm-dd HH24:MI:SS’) from dual; –减1星期

select sysdate,to_char(sysdate-1,’yyyy-mm-dd HH24:MI:SS’) from dual; –减1天

select sysdate,to_char(sysdate-1/24,’yyyy-mm-dd HH24:MI:SS’) from dual; –减1小时

select sysdate,to_char(sysdate-1/24/60,’yyyy-mm-dd HH24:MI:SS’) from dual; –减1分钟

select sysdate,to_char(sysdate-1/24/60/60,’yyyy-mm-dd HH24:MI:SS’) from dual; –减1秒

ORACLE时间函数(SYSDATE)简析

1:取得当前日期是本月的第几周

SQL> select to_char(sysdate,’YYYYMMDD W HH24:MI:SS’) from dual;

TO_CHAR(SYSDATE,’YY

——————-

20030327 4 18:16:09

SQL> select to_char(sysdate,’W’) from dual;

T

4

2:取得当前日期是一个星期中的第几天,注意星期日是第一天

SQL> select sysdate,to_char(sysdate,’D’) from dual;

SYSDATE T

——— –

27-MAR-03 5

类似:

select to_char(sysdate,’yyyy’) from dual; –年

select to_char(sysdate,’Q’ from dual; –季

select to_char(sysdate,’mm’) from dual; –月

select to_char(sysdate,’dd’) from dual; –日

ddd 年中的第几天

WW 年中的第几个星期

W 该月中第几个星期

D 周中的星期几

hh 小时(12)

hh24 小时(24)

Mi 分

ss 秒

3:取当前日期是星期几中文显示:

SQL> select to_char(sysdate,’day’) from dual;

TO_CHAR(SYSDATE,’DAY’)

———————-

星期四

4:如果一个表在一个date类型的字段上面建立了索引,如何使用

alter session set NLS_DATE_FORMAT=’YYYY-MM-DD HH24:MI:SS’

5: 得到当前的日期

select sysdate from dual;

6: 得到当天凌晨0点0分0秒的日期

select trunc(sysdate) from dual;

— 得到这天的最后一秒

select trunc(sysdate) + 0.99999 from dual;

— 得到小时的具体数值

select trunc(sysdate) + 1/24 from dual;

select trunc(sysdate) + 7/24 from dual;

7.得到明天凌晨0点0分0秒的日期

select trunc(sysdate+1) from dual;

select trunc(sysdate)+1 from dual;

8: 本月一日的日期

select trunc(sysdate,’mm’) from dual;

9:得到下月一日的日期

select trunc(add_months(sysdate,1),’mm’) from dual;

10:返回当前月的最后一天?

select last_day(sysdate) from dual;

select last_day(trunc(sysdate)) from dual;

select trunc(last_day(sysdate)) from dual;

select trunc(add_months(sysdate,1),’mm’) – 1 from dual;

11: 得到一年的每一天

select trunc(sysdate,’yyyy’)+ rn -1 date0

from

(select rownum rn from all_objects

where rownum<366);

12:今天是今年的第N天

SELECT TO_CHAR(SYSDATE,’DDD’) FROM DUAL;

13:如何在给现有的日期加上2年

select add_months(sysdate,24) from dual;

14:判断某一日子所在年分是否为润年

select decode(to_char(last_day(trunc(sysdate,’y’)+31),’dd’),’29’,’闰年’,’平年’) from dual;

15:判断两年后是否为润年

select decode(to_char(last_day(trunc(add_months(sysdate,24),’y’)+31),’dd’),’29’,’闰年’,’平年’) from dual;

16:得到日期的季度

select ceil(to_number(to_char(sysdate,’mm’))/3) from dual;

select to_char(sysdate, ‘Q’) from dual;

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 195,898评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,401评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,058评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,539评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,382评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,319评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,706评论 3 386
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,370评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,664评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,715评论 2 312
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,476评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,326评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,730评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,003评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,275评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,683评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,877评论 2 335

推荐阅读更多精彩内容