Oracle SQL函数之日期函数
sysdate 【功能】:返回当前日期。 【参数】:没有参数,没有括号 【返回】:日期 SQL> SELECT SYSDATE FROM DUAL; SYSDATE ----------- 2015/4/9 19 add_months(d1,n1) 【功能】:返回在日期d1基础上再加n1个月后新的日期。 【参数】:d1,日期型,n1数字型 【返回】:日期 SQL> SELECT SYSDATE,ADD_MONTHS(SYSDATE,3) FROM DUAL; SYSDATE ADD_MONTHS(SYSDATE,3) ----------- --------------------- 2015/4/9 19 2015/7/9 19:02:59 last_day(d1) 【功能】:返回日期d1所在月份最后一天的日期。 【参数】:d1,日期型 【返回】:日期 SQL> SELECT SYSDATE,LAST_DAY(SYSDATE),LAST_DAY(TO_DATE(‘2015/12/01‘,‘YYYY/MM/DD‘)) FROM DUAL; SYSDATE LAST_DAY(SYSDATE) LAST_DAY(TO_DATE(‘2015/12/01‘, ----------- ----------------- ------------------------------ 2015/4/9 19 2015/4/30 19:08:3 2015/12/31 months_between(d1,d2) 【功能】:返回日期d1到日期d2之间的月数。 【参数】:d1,d2 日期型 【返回】:数字 如果d1>d2,则返回正数 如果d1<d2,则返回负数 SQL> SELECT MONTHS_BETWEEN(SYSDATE,TO_DATE(‘2015/01/01‘,‘YYYY/MM/DD‘)),MONTHS_BETWEEN(SYSDATE,TO_DATE(‘2015/12/31‘,‘YYYY/MM/DD‘)) FROM DUAL; MONTHS_BETWEEN(SYSDATE,TO_DATE MONTHS_BETWEEN(SYSDATE,TO_DATE ------------------------------ ------------------------------ 3.28386872759857 -8.6838732078853 NEW_TIME(dt1,c1,c2) 【功能】:给出时间dt1在c1时区对应c2时区的日期和时间 【参数】:dt1,d2 日期型 【返回】:日期时间 【参数】:c1,c2对应的 时区及其简写 大西洋标准时间:AST或ADT 阿拉斯加_夏威夷时间:HST或HDT 英国夏令时:BST或BDT 美国山区时间:MST或MDT 美国中央时区:CST或CDT 新大陆标准时间:NST 美国东部时间:EST或EDT 太平洋标准时间:PST或PDT 格林威治标准时间:GMT Yukou标准时间:YST或YDT 【示例】 SQL> SELECT TO_CHAR(SYSDATE,‘YYYY/MM/DD HH24:MI:SS‘) BJ_TIME,TO_CHAR(NEW_TIME(SYSDATE,‘PDT‘,‘GMT‘),‘YYYY/MM/DD HH24:MI:SS‘) LOS_ANGLES FROM DUAL; BJ_TIME LOS_ANGLES ------------------- ------------------- 2015/04/09 19:17:06 2015/04/10 02:17:06 round(d1[,c1]) 【功能】:给出日期d1按期间(参数c1)四舍五入后的期间的第一天日期(与数值四舍五入意思相近) 【参数】:d1日期型,c1为字符型(参数),c1默认为j(即最近0点日期) 【参数表】:c1对应的参数表: 最近0点日期: 取消参数c1或j 最近的星期日:day或dy或d 最近月初日期:month或mon或mm或rm 最近季日期:q 最近年初日期:syear或year或yyyy或yyy或yy或y(多个y表示精度) 最近世纪初日期:cc或scc 【返回】:日期 【示例】 SQL> select sysdate 当时日期, 2 round(sysdate) 最近0点日期, 3 round(sysdate,‘day‘) 最近星期日, 4 round(sysdate,‘month‘) 最近月初, 5 round(sysdate,‘q‘) 最近季初日期, 6 round(sysdate,‘year‘) 最近年初日期 from dual; 当时日期 最近0点日期 最近星期日 最近月初 最近季初日期 最近年初日期 ----------- ----------- ----------- ----------- ------------ ------------ 2015/4/9 19 2015/4/10 2015/4/12 2015/4/1 2015/4/1 2015/1/1 trunc(d1[,c1]) 【功能】:返回日期d1所在期间(参数c1)的第一天日期 【参数】:d1日期型,c1为字符型(参数),c1默认为j(即当前日期) 【参数表】:c1对应的参数表: 最近0点日期: 取消参数c1或j 最近的星期日:day或dy或d (每周顺序:日,一,二,三,四,五,六) 最近月初日期:month或mon或mm或rm 最近季日期:q 最近年初日期:syear或year或yyyy或yyy或yy或y(多个y表示精度) 最近世纪初日期:cc或scc 【返回】:日期 【示例】 SQL> select sysdate 当时日期, 2 trunc(sysdate) 今天日期, 3 trunc(sysdate,‘day‘) 本周星期日, 4 trunc(sysdate,‘month‘) 本月初, 5 trunc(sysdate,‘q‘) 本季初日期, 6 trunc(sysdate,‘year‘) 本年初日期 from dual; 当时日期 今天日期 本周星期日 本月初 本季初日期 本年初日期 ----------- ----------- ----------- ----------- ----------- ----------- 2015/4/9 19 2015/4/9 2015/4/5 2015/4/1 2015/4/1 2015/1/1 next_day(d1[,c1]) 【功能】:返回日期d1在下周,星期几(参数c1)的日期 【参数】:d1日期型,c1为字符型(参数),c1默认为j(即当前日期) 【参数表】:c1对应:星期一,星期二,星期三……星期日 【返回】:日期 SQL> select sysdate 当时日期, 2 next_day(sysdate,‘星期一‘) 下周星期一, 3 next_day(sysdate,‘星期二‘) 下周星期二, 4 next_day(sysdate,‘星期三‘) 下周星期三, 5 next_day(sysdate,‘星期四‘) 下周星期四, 6 next_day(sysdate,‘星期五‘) 下周星期五, 7 next_day(sysdate,‘星期六‘) 下周星期六, 8 next_day(sysdate,‘星期日‘) 下周星期日 from dual; 当时日期 下周星期一 下周星期二 下周星期三 下周星期四 下周星期五 下周星期六 下周星期日 ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- 2015/4/9 19 2015/4/13 1 2015/4/14 1 2015/4/15 1 2015/4/16 1 2015/4/10 1 2015/4/11 1 2015/4/12 1 extract(c1 from d1) 【功能】:日期/时间d1中,参数(c1)的值 【参数】:d1日期型(date)/日期时间型(timestamp),c1为字符型(参数) 【参数表】:c1对应的参数表详见示例 SQL> select 2 extract(hour from timestamp ‘2001-2-16 2:38:40 ‘ ) 小时, 3 extract(minute from timestamp ‘2001-2-16 2:38:40 ‘ ) 分钟, 4 extract(second from timestamp ‘2001-2-16 2:38:40 ‘ ) 秒, 5 extract(DAY from timestamp ‘2001-2-16 2:38:40 ‘ ) 日, 6 extract(MONTH from timestamp ‘2001-2-16 2:38:40 ‘ ) 月, 7 extract(YEAR from timestamp ‘2001-2-16 2:38:40 ‘ ) 年 8 from dual; 小时 分钟 秒 日 月 年 ---------- ---------- ---------- ---------- ---------- ---------- 2 38 40 16 2 2001 SQL> select extract(YEAR from date ‘2015-04-10‘) from dual; EXTRACT(YEARFROMDATE‘2015-04-1 ------------------------------ 2015 SQL> select extract(day from sysdate),extract(month from sysdate),extract(year from sysdate) from dual; EXTRACT(DAYFROMSYSDATE) EXTRACT(MONTHFROMSYSDATE) EXTRACT(YEARFROMSYSDATE) ----------------------- ------------------------- ------------------------ 9 4 2015 SQL> select sysdate 当前时间, 2 extract(DAY from sysdate ) 日, 3 extract(MONTH from sysdate ) 月, 4 extract(YEAR from sysdate ) 年 5 from dual; 当前时间 日 月 年 ----------- ---------- ---------- ---------- 2015/4/9 20 9 4 2015 localtimestamp 【功能】:返回客户端会话中本地的日期和时间 【参数】:没有参数,没有括号 【返回】:日期 SQL> select localtimestamp from dual; LOCALTIMESTAMP -------------------------------------------------------------------------------- 10-4月 -15 11.56.46.224832 上午 current_timestamp 【功能】:以timestamp with time zone数据类型返回当前会话时区中的当前日期 【参数】:没有参数,没有括号 【返回】:日期 SQL> select current_timestamp from dual; CURRENT_TIMESTAMP -------------------------------------------------------------------------------- 10-4月 -15 11.56.02.361761 上午 +08:00 current_date 【功能】:返回当前会话时区中的当前日期 【参数】:没有参数,没有括号 【返回】:日期 SQL> select current_date from dual; CURRENT_DATE ------------ 2015/4/10 11 dbtimezone 【功能】:返回时区 【参数】:没有参数,没有括号 【返回】:字符型 SQL> select dbtimezone from dual; DBTIMEZONE ---------- +00:00 SESSIONTIMEZONE 【功能】:返回会话时区 【参数】:没有参数,没有括号 【返回】:字符型 SQL> select sessiontimezone from dual; SESSIONTIMEZONE --------------------------------------------------------------------------- +08:00 INTERVAL c1 set1 【功能】:变动日期时间数值 【参数】:c1为数字字符串或日期时间字符串,set1为日期参数 【参数表】:set1具体参照示例 【返回】:日期时间格式的数值,前面多个+号 以天或天更小单位时可用数值表达式借用,如1表示1天,1/24表示1小时,1/24/60表示1分钟 【示例】 SQL> select 2 sysdate, 3 trunc(sysdate)+(interval ‘1‘ second), --加1秒(1/24/60/60) 4 trunc(sysdate)+(interval ‘1‘ minute), --加1分钟(1/24/60) 5 trunc(sysdate)+(interval ‘1‘ hour), --加1小时(1/24) 6 trunc(sysdate)+(INTERVAL ‘1‘ DAY), --加1天(1) 7 trunc(sysdate)+(INTERVAL ‘1‘ MONTH), --加1月 8 trunc(sysdate)+(INTERVAL ‘1‘ YEAR), --加1年 9 trunc(sysdate)+(interval ‘01:02:03‘ hour to second), --加指定小时到秒 10 trunc(sysdate)+(interval ‘01:02‘ minute to second), --加指定分钟到秒 11 trunc(sysdate)+(interval ‘01:02‘ hour to minute), --加指定小时到分钟 12 trunc(sysdate)+(interval ‘2 01:02‘ day to minute) --加指定天数到分钟 13 from dual; SYSDATE TRUNC(SYSDATE)+(INTERVAL‘1‘SEC TRUNC(SYSDATE)+(INTERVAL‘1‘MIN TRUNC(SYSDATE)+(INTERVAL‘1‘HOU TRUNC(SYSDATE)+(INTERVAL‘1‘DAY TRUNC(SYSDATE)+(INTERVAL‘1‘MON TRUNC(SYSDATE)+(INTERVAL‘1‘YEA TRUNC(SYSDATE)+(INTERVAL‘01:02 TRUNC(SYSDATE)+(INTERVAL‘01:02 TRUNC(SYSDATE)+(INTERVAL‘01:02 TRUNC(SYSDATE)+(INTERVAL‘201:0 ----------- ------------------------------ ------------------------------ ------------------------------ ------------------------------ ------------------------------ ------------------------------ ------------------------------ ------------------------------ ------------------------------ ------------------------------ 2015/4/9 21 2015/4/9 0:00:01 2015/4/9 0:01:00 2015/4/9 1:00:00 2015/4/10 2015/5/9 2016/4/9 2015/4/9 1:02:03
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。