oracle日期处理全集__日期加减全活儿

合集下载

Oracle时间日期操作方法小结

Oracle时间日期操作方法小结

Oracle时间⽇期操作⽅法⼩结sysdate+(5/24/60/60) 在系统时间基础上延迟5秒sysdate+5/24/60 在系统时间基础上延迟5分钟sysdate+5/24 在系统时间基础上延迟5⼩时sysdate+5 在系统时间基础上延迟5天add_months(sysdate,-5) 在系统时间基础上延迟5⽉add_months(sysdate,-5*12) 在系统时间基础上延迟5年上⽉末的⽇期:select last_day(add_months(sysdate, -1)) from dual;本⽉的最后⼀秒:select trunc(add_months(sysdate,1),'MM') - 1/24/60/60 from dual本周星期⼀的⽇期:select trunc(sysdate,'day')+1 from dual年初⾄今的天数:select ceil(sysdate - trunc(sysdate, 'year')) from dual;今天是今年的第⼏周 :select to_char(sysdate,'fmww') from dual今天是本⽉的第⼏周:SELECT TO_CHAR(SYSDATE,'WW') - TO_CHAR(TRUNC(SYSDATE,'MM'),'WW') + 1 AS "weekOfMon" FROM dual本⽉的天数SELECT to_char(last_day(SYSDATE),'dd') days FROM dual今年的天数select add_months(trunc(sysdate,'year'), 12) - trunc(sysdate,'year') from dual下个星期⼀的⽇期SELECT Next_day(SYSDATE,'monday') FROM dual============================================--计算⼯作⽇⽅法create table t(s date,e date);alter session set nls_date_format = 'yyyy-mm-dd';insert into t values('2003-03-01','2003-03-03');insert into t values('2003-03-02','2003-03-03');insert into t values('2003-03-07','2003-03-08');insert into t values('2003-03-07','2003-03-09');insert into t values('2003-03-05','2003-03-07');insert into t values('2003-02-01','2003-03-31');-- 这⾥假定⽇期都是不带时间的,否则在所有⽇期前加trunc即可。

数据库日期格式处理(Oracle)

数据库日期格式处理(Oracle)

TO_DATE格式(以时间:2007-11-02 13:45:25为例)Year:yy two digits 两位年显示值:07yyy three digits 三位年显示值:007yyyy four digits 四位年显示值:2007Month:mm number 两位月显示值:11mon abbreviated 字符集表示显示值:11月,若是英文版,显示novmonth spelled out 字符集表示显示值:11月,若是英文版,显示novemberDay:dd number 当月第几天显示值:02ddd number 当年第几天显示值:02dy abbreviated 当周第几天简写显示值:星期五,若是英文版,显示friday spelled out 当周第几天全写显示值:星期五,若是英文版,显示fridayddspth spelled out, ordinal twelfthHour:hh two digits 12小时进制显示值:01hh24 two digits 24小时进制显示值:13Minute:mi two digits 60进制显示值:45Second:ss two digits 60进制显示值:25其它Q digit 季度显示值:4WW digit 当年第几周显示值:44W digit 当月第几周显示值:124小时格式下时间范围为: 0:00:00 - 23:59:59....12小时格式下时间范围为: 1:00:00 - 12:59:59 ....1. 日期和字符转换函数用法(to_date,to_char)select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') as nowTime from dual; //日期转化为字符串select to_char(sysdate,'yyyy') as nowYear from dual; //获取时间的年select to_char(sysdate,'mm') as nowMonth from dual; //获取时间的月select to_char(sysdate,'dd') as nowDay from dual; //获取时间的日select to_char(sysdate,'hh24') as nowHour from dual; //获取时间的时select to_char(sysdate,'mi') as nowMinute from dual; //获取时间的分select to_char(sysdate,'ss') as nowSecond from dual; //获取时间的秒select to_date('2004-05-07 13:23:44','yyyy-mm-dd hh24:mi:ss') from dual//2.select to_char( to_date(222,'J'),'Jsp') from dual显示Two Hundred Twenty-Two3.求某天是星期几select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day') from dual;星期一select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE = American') from dual;monday设置日期语言ALTER SESSION SET NLS_DATE_LANGUAGE='AMERICAN';也可以这样TO_DATE ('2002-08-26', 'YYYY-mm-dd', 'NLS_DATE_LANGUAGE = American')4. 两个日期间的天数select floor(sysdate - to_date('20020405','yyyymmdd')) from dual;5. 时间为null的用法select id, active_date from table1UNIONselect 1, TO_DATE(null) from dual;注意要用TO_DATE(null)6.月份差a_date between to_date('20011201','yyyymmdd') and to_date('20011231','yyyymmdd') 那么12月31号中午12点之后和12月1号的12点之前是不包含在这个范围之内的。

Oracle日期函数和循环总结

Oracle日期函数和循环总结

Oracle⽇期函数和循环总结⼀,⽇期相关的函数Select to_char(sysdate,'Q') from dual;--指定⽇期的季度Select to_char(sysdate,'MM') from dual;--⽉份Select to_char(sysdate,'WW') from dual;--当年第⼏周Select to_char(sysdate,'W') from dual ;--本⽉第⼏周Select to_char(sysdate,'DD') from dual;--当⽉第⼏天Select to_char(sysdate,'D') from dual;--周内第⼏天Select to_char(sysdate,'DY') from duaL;--星期⼏Select last_day(sysdate) from dual;--本⽉最后⼀天Select add_months(sysdate,2) from dual;--当前⽇期d后推n个⽉select months_between(sysdate,to_date('2012-11-12','yyyy-mm-dd'))from dual;--⽇期f和s间相差⽉数SELECT (next_day(sysdate,1)+1) FROM dual;--指定的⽇期之后的第⼀个⼯作⽇的⽇期select to_char(add_months(last_day(sysdate),-1),'yyyy-MM-dd') LastDay from dual;--上⽉末天select to_char(add_months(sysdate,-1),'yyyy-MM-dd') PreToday from dual;--上⽉今天select to_char(add_months(last_day(sysdate)+1,-2),'yyyy-MM-dd') firstDay from dual;--上⽉第⼀天select to_char(sysdate,'ww') from dual group by to_char(sysdate,'ww');--按照每周进⾏统计select to_char(sysdate,'mm') from dual group by to_char(sysdate,'mm');--按照每⽉进⾏统计select to_char(sysdate,'q') from dual group by to_char(sysdate,'q');--按照每季度进⾏统计⼆,循环编写循环控制结构时,⽤户可以使⽤基本循环,WHILE循环和FOR循环等三种类型的循环语句,下⾯分别介绍使⽤这三种循环语句的⽅法。

Oracle日期处理函数+常用函数示例

Oracle日期处理函数+常用函数示例

Oracle⽇期处理函数+常⽤函数⽰例时间相关应⽤⽰例————select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;——2019-10-21 14:34:15select to_char(sysdate,'ddd-day-dy-Q-WW-W') from dual;——294-星期⼀-4-42-3(当年第⼏天-星期⼏-星期⼏缩写-第⼏季度-当年第⼏周-当⽉第⼏周)select to_date('2019-10-21 14:34:15','yyyy-mm-dd hh24:mi:ss') from dual;——字符转换为⽇期格式select to_char (sysdate, 'yy-mm-dd-day-dy', 'NLS_DATE_LANGUAGE = American') from dual;——19-10-21-monday -mon (以英⽂显⽰⽇期)select * from nls_session_parameters;——查看系统⽀持的⽇期格式select to_number(sysdate - (sysdate-1))*24*60*60*1000 from dual;——86400000(相差多少天、时、分、秒、毫秒,相应增删乘数即可)select to_date(null) from dual;——如果时间为null,那么null也要转换为时间格式select to_char(add_months(trunc(sysdate),-1),'yyyy-mm') from dual;——2019-09(上个⽉)select last_day(add_months(trunc(sysdate),-1)) from dual;——2019/9/30(当⽉最后⼀天)select to_char(trunc(add_months(trunc(sysdate),-1),'month'),'yyyy-mm-dd HH24:MI:SS') from dual;——2019-09-01 00:00:00(上个⽉第⼀天)select next_day(sysdate,7) from dual;——2019/10/26 15:16:43(从输⼊⽇期得当下个星期天的⽇期,7可以换成其他星期数)select months_between(to_date('2014-3-21','yyyy-mm-dd'), to_date('2014-3-20','yyyy-mm-dd')) months from dual;——0.032258064516129(两个⽉差)select extract(month from sysdate) from dual;——10(截取时间戳的某个字段,语法为extract(year|month|day|hour|minute|second from column_name))select add_months(trunc(sysdate,'year'), 12) - trunc(sysdate,'year') from dual;——365(计算当年有多少天)select to_char(last_day(to_date('02','mm')),'yyyy-mm-dd') from dual;——2019-02-28(获取当年2⽉最后⼀天信息,判断是否闰年)时间常⽤函数总结:select SYSDATE from dual;——2019/10/21 16:07:37(获取系统时间)Select last_day(sysdate) from dual;——2019/10/31 16:09:19(获取输⼊date类型的最后⼀天)Select add_months(sysdate,2) from dual;——2019/12/21 16:12:29(左参数⽇期,右参数当前⽉份加减数,获取相差⽉份的⽇期)select months_between(sysdate,to_date('2019-09-12','yyyy-mm-dd'))from dual;——1.31224499701314(⽇期相差的⽉份)SELECT next_day(sysdate,2) FROM dual;——2019/10/28 16:20:17(下周2⽇期)select sessiontimezone,current_date from dual;——+08:00,2019/10/21 16:21:53(返回时区和当前会话时区中的当前⽇期)select extract(month from sysdate) "This Month" from dual;——10(按规则得到时间字段,extract(year|month|day|hour|minute|second from column_name) = value)SELECT TRUNC (SYSDATE, 'DD'),TRUNC (SYSDATE, 'MM'),TRUNC (SYSDATE, 'yyyy'),TRUNC (SYSDATE, 'day'),TRUNC (SYSDATE, 'q') FROM DUAL ;——(截取:当天、本⽉第⼀天、本年第⼀天、本周第⼀天、本季度第⼀天;另外还可以截取时分秒)其他常⽤函数总结:select concat('010-','88888888') from dual;——010-********(连接字符串,oracle的concat函数不能连接超过两个,三个及以上需要嵌套使⽤,或者⽤管道符||进⾏连接)select substr('12345',3,2) from dual——34(截取字符串,下标基1,从3开始截取两个字符);select instr('oracle traning','ra',1,2) from dual;——9(从1开始查找第2个出现的'ra'字符串,返回下标,若找不到则返回0)select initcap('smith hEllo') from dual;——Smith Hello(格式化字符串,使单词⾸字符⼤⼩,其余⼩写)select lpad(rpad('gao',10,'*'),17,'*')from dual;——*******gao*******(在指定字符的左或右拼接指定符号,使总长度达到指定的数字)select replace('he love you','he','I') from dual;——I love you(⽤指定字符替换相应字符)select trim('a' from 'abacda') from dual;——bacd(⽤单字符删除⾸尾第⼀个字符,若匹配则删除)select trim(' abacd ') from dual;——(删除⾸位空格)select ceil(3.1415927) from dual;——4(取整,⼤于⾃⾝)select floor(3.1415927) from dual;——3(取整,不⼩于⾃⾝)select round(55.655, 2) from dual;——55.66(四舍五⼊取整,保留⼩数点右边两位,若是负数则保留⼩数点左边)select trunc (55.655, 2) from dual;——(截取,只舍不⼊)select abs(-100) from dual;——100(获取绝对值)SELECT LENGTH (' ') FROM DUAL;——(返回字符串长度,空则为空)select lower('AaBbCcDd') from dual;——(变⼩写)select upper('AaBbCcDd') from dual;——(变⼤写)select ASCII('s') from dual;——(返回字符的⼗进制ascii码)select xm from table1 where soundex(xm)=soundex('weather');——(查找发⾳类似的字符串)select mod(10,3) from dual;——1(求余数)select power(3,3) from dual;——27(求次⽅)select sign(123),sign(-100),sign(0) from dual;——1,-1,0(检查正负)select sqrt(64),sqrt(10) from dual;——(计算平⽅根)Select ASCIISTR ('中国') from dual;——(转换数据库字符集的ASCII码)Select decode('a','⾦',1,'银',2,0) from dual;——0(⽤a跟后⾯参数进⾏⽐对,如果是⽐对成功就显⽰该值,否则显⽰默认值0)Select nullif('a', 'b') from dual;——a(⽐较两个表达式,相等返回null,否则返回第⼀个结果)Select nvl(null,0) from dual;——0(如果第⼀个参数为空,则返回第⼆个参数)Select nvl2(null,1,0) from dual;——0(不为空则返回第⼆个参数,为空则返回第三个参数)分组统计函数:AVG([DISTINCT|ALL]col)——求平均值COUNT(*|[DISTINCT|ALL] col)——求总数MAX([DISTINCT|ALL]col)——求最⼤值MIN([DISTINCT|ALL]col)——求最⼩值SUM([DISTINCT|ALL]col)——求和获取数据库信息:SELECT SYS_CONTEXT ('USERENV', 'TERMINAL') 客户端名称,SYS_CONTEXT ('USERENV', 'LANGUAGE') 客户端语⾔,SYS_CONTEXT ('USERENV', 'SESSIONID') sessionid,SYS_CONTEXT ('USERENV', 'INSTANCE') instance,SYS_CONTEXT ('USERENV', 'ENTRYID') entryid,SYS_CONTEXT ('USERENV', 'ISDBA') isdba,SYS_CONTEXT ('USERENV', 'NLS_TERRITORY') 地区,SYS_CONTEXT ('USERENV', 'NLS_CURRENCY') 货币,SYS_CONTEXT ('USERENV', 'NLS_CALENDAR') nls_calendar,SYS_CONTEXT ('USERENV', 'NLS_DATE_FORMAT') 时间格式,SYS_CONTEXT ('USERENV', 'NLS_DATE_LANGUAGE') 时间语⾔,SYS_CONTEXT ('USERENV', 'NLS_SORT') nls_sort,SYS_CONTEXT ('USERENV', 'CURRENT_USER') current_user,SYS_CONTEXT ('USERENV', 'CURRENT_USERID') current_userid,SYS_CONTEXT ('USERENV', 'SESSION_USER') session_user,SYS_CONTEXT ('USERENV', 'SESSION_USERID') session_userid,SYS_CONTEXT ('USERENV', 'PROXY_USER') proxy_user,SYS_CONTEXT ('USERENV', 'PROXY_USERID') proxy_userid,SYS_CONTEXT ('USERENV', 'DB_DOMAIN') db_domain,SYS_CONTEXT ('USERENV', 'DB_NAME') 数据库名称,SYS_CONTEXT ('USERENV', 'HOST') 客户端完成名称,SYS_CONTEXT ('USERENV', 'OS_USER') 客户端⽤户,SYS_CONTEXT ('USERENV', 'EXTERNAL_NAME') external_name,SYS_CONTEXT ('USERENV', 'IP_ADDRESS') 客户端IP地址,SYS_CONTEXT ('USERENV', 'NETWORK_PROTOCOL') ⽹络协议,SYS_CONTEXT ('USERENV', 'BG_JOB_ID') bg_job_id,SYS_CONTEXT ('USERENV', 'FG_JOB_ID') fg_job_id,SYS_CONTEXT ('USERENV', 'AUTHENTICATION_TYPE') authentication_type, SYS_CONTEXT ('USERENV', 'AUTHENTICATION_DATA') authentication_data FROM DUAL;select user from dual;——查询当前数据库的登录⽤户名select userenv('language') from dual;——返回当前地区、语⾔和字符集select vsize('中') from dual;——获取内部表⽰的字节数。

Oracle中日期时间的操作比较和加减

Oracle中日期时间的操作比较和加减

Oracle中日期时间的操作比较和加减Oracle关于时间/日期的操作日期时间间隔操作当前时间减去分钟的时间select sysdate sysdate interval MINUTE from dual当前时间减去小时的时间select sysdate interval hour from dual当前时间减去天的时间select sysdate interval day from dual当前时间减去月的时间select sysdate sysdate interval month from dual当前时间减去年的时间select sysdate sysdate interval year from dual时间间隔乘以一个数字select sysdate sysdate *interval hour from dual日期到字符操作select sysdate to_char(sysdate yyyy mm dd hh :mi:ss ) from dualselect sysdate to_char(sysdate yyyy mm dd hh:mi:ss ) from dualselect sysdate to_char(sysdate yyyy ddd hh:mi:ss ) from dual select sysdate to_char(sysdate yyyy mm iw d hh:mi:ss ) from dual参考oracle的相关关文档(ORACLE DOC/SERVER /A /SQL_ELEMENTS HTM# )字符到日期操作select to_date( : : yyyy mm dd hh :mi:ss ) from dual具体用法和上面的to_char差不多trunk/ ROUND函数的使用select trunc(sysdate YEAR ) from dualselect trunc(sysdate ) from dualselect to_char(trunc(sysdate YYYY ) YYYY ) from dualoracle有毫秒级的数据类型返回当前时间年月日小时分秒毫秒select to_char(current_timestamp( ) DD MON YYYY HH :MI:SSxFF ) from dual;返回当前时间的秒毫秒可以指定秒后面的精度(最大= )select to_char(current_timestamp( ) MI:SSxFF ) from dual;计算程序运行的时间(ms)declaretype rc is ref cursor;l_rc rc;l_dummy all_objects object_name%type;l_start number default dbms_utility get_time;beginfor I inloopopen l_rc forselect object_name from all_objects ||where object_id = || i;lishixinzhi/Article/program/Oracle/201311/17649。

ORACLE日期加减操作

ORACLE日期加减操作

ORACLE⽇期加减操作⽆论是DATE还是timestamp都可以进⾏加减操作。

可以对当前⽇期加年、⽉、⽇、时、分、秒,操作不同的时间类型,有三种⽅法:1 使⽤内置函数numtodsinterval增加⼩时,分钟和秒2 加⼀个简单的数来增加天3 使⽤内置函数add_months来增加年和⽉例:对当前⽇期增加⼀个⼩时:SQL> select sysdate, sysdate+numtodsinterval(1,’hour’) from dual ;SYSDATE SYSDATE+NUMTODSINTE——————- ——————-2010-10-14 21:38:19 2010-10-14 22:38:19对当前⽇期增加50分种SQL> select sysdate, sysdate+numtodsinterval(50,’minute’) from dual ;SYSDATE SYSDATE+NUMTODSINTE——————- ——————-2010-10-14 21:39:12 2010-10-14 22:29:12对当前⽇期增加45秒SQL> select sysdate, sysdate+numtodsinterval(45,’second’) from dual ;SYSDATE SYSDATE+NUMTODSINTE——————- ——————-2010-10-14 21:40:06 2010-10-14 21:40:51对当前⽇期增加3天SQL> select sysdate, sysdate+3 from dual ;SYSDATE SYSDATE+3——————- ——————-2010-10-14 21:40:46 2010-10-17 21:40:46对当前⽇期增加4个⽉SQL> select sysdate, add_months(sysdate,4) from dual ;SYSDATE ADD_MONTHS(SYSDATE,——————- ——————-2010-10-14 21:41:43 2011-02-14 21:41:43当前⽇期增加2年SQL> select sysdate, add_months(sysdate,12*2) from dual ;SYSDATE ADD_MONTHS(SYSDATE,——————- ——————-2010-10-14 21:42:17 2012-10-14 21:42:17timestamp的操作⽅法与上⾯类似;求两个⽇期之差:例:求2007-5-23 21:23:34与当前时间之间的差值。

oracle 日期 加减方法

oracle 日期 加减方法

oracle 日期加减方法2011-04-18 08:40加法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秒<?XML:NAMESPACE PREFIX = O />日期与日期之间不能相加日期与数字就可相加SQL> select sysdate+1 from dual;日期与日期可以相减SQL> select sysdate-sysdate from dual;Add_Months(D,X)返回D日期加上X个月后的日期Last_Day(D)返回包含日期D的月份的最后一天的日期add_months(sysdate,1) 加一个月add_months(sysdate,-1)减一个月sysdate+1 加一天-------------------------------------------------------------------------------Months_Between(D1,D2)返回D1、D2之间的月份数目New_Time(D,Z1,Z2)返回时区Z1里时间为D时Z2时区的时间Next_Day(D,S)返回满足条件S的下一天S为星期几Round(D,F)日期D按照格式F进行舍入Sysdate返回数据库当前时间Trunc(D,F)按照格式F截断时间D另外:日期可以直接加减如:sysdate +1,sysdate -1------------------------------------------------------------sysdate+1 加一天sysdate+1/24 加1小时sysdate+1/(24*60) 加1分钟sysdate+1/(24*60*60) 加1秒钟。

oracle日期操作语句总结

oracle日期操作语句总结

oracle⽇期操作语句总结1.查询当前年、⽉、周相关时间1.1.查询当前年份SELECT TO_CHAR(SYSDATE,'YYYY') AS YEAR FROM DUAL--查询当前年份SELECT TO_CHAR(SYSDATE,'YYY') AS YEAR FROM DUAL--查询当前年份后两位SELECT TO_CHAR(SYSDATE,'YY') AS YEAR FROM DUAL--查询当前年份最后两位SELECT TO_CHAR(SYSDATE,'Y') AS YEAR FROM DUAL--查询当前年份最后⼀位1.2.查询当前年份第⼏天SELECT TO_CHAR(SYSDATE,'DDD') AS DAYS FROM DUAL1.3.查询当前⽉份第⼏天SELECT TO_CHAR(SYSDATE,'DD') AS DAYS FROM DUAL1.4.查询当前周的星期⼏SELECT TO_CHAR(SYSDATE,'dy') AS WEEK FROM DUALSELECT TO_CHAR(SYSDATE,'day') AS WEEK FROM DUAL2.查询当前第⼏季度SELECT TO_CHAR(SYSDATE,'Q') AS JD FROM DUAL3.查询当前在⼀年内是第⼏周SELECT TO_CHAR(SYSDATE,'IW') AS WEEKNUM FROM DUALSELECT TO_CHAR(SYSDATE,'WW') AS WEEKNUM FROM DUALSELECT TO_CHAR(SYSDATE,'W') AS WEEKNUM FROM DUAL4.查询当前某年某⽉有多少天SELECT TO_CHAR(last_day(to_date('2019/02/01','YYYY/MM/DD')),'DD') AS MONTH_DAYS_NUMBER FROM DUAL5.查询当前的⽇期格式SELECT TO_CHAR(SYSDATE,'YYYY/MM/DD') AS MONTH FROM DUAL--获取当前⽇期的'YYYY/MM/DD'格式:2020/01/02SELECT TO_CHAR(SYSDATE,'YYYYMMDD') AS MONTH FROM DUAL--获取当前⽇期的'YYYYMMDD'格式:20200102SELECT TO_CHAR(SYSDATE,'YYYYMMDD HH:MI:SS') AS now FROM DUAL--获取当前时间,精确到秒的12⼩时制格式:20200102 03:18:25SELECT TO_CHAR(SYSDATE,'YYYYMMDD HH24:MI:SS') AS now FROM DUAL--获取当前时间,精确到秒24⼩时制的格式:20200102 15:18:13SELECT TO_CHAR(SYSDATE,'YYYY/MM/DD HH24:MI:SS:PM:DY') AS now FROM DUAL--获取当前时间的格式,显⽰上、下午和星期⼏:2020/01/02 15:17:59:下午:星期四6.查询距离当前时间⼀段时间间隔的时间,当前时间之前⽤“-”当前时间之后⽤“+”SELECT TO_CHAR(SYSDATE, 'YYYY/MM/DD HH24:MI:SS') AS NOW,TO_CHAR(SYSDATE - INTERVAL '7' second,'YYYY/MM/DD HH24:MI:SS') AS PAST FROM DUAL --查询当前时间的7秒前时间SELECT TO_CHAR(SYSDATE, 'YYYY/MM/DD HH24:MI:SS') AS NOW,TO_CHAR(SYSDATE - INTERVAL '7' minute,'YYYY/MM/DD HH24:MI:SS') AS PAST FROM DUAL --查询当前时间的7分钟前时间SELECT TO_CHAR(SYSDATE, 'YYYY/MM/DD HH24:MI:SS') AS NOW,TO_CHAR(SYSDATE - INTERVAL '7'hour ,'YYYY/MM/DD HH24:MI:SS') AS PAST FROM DUAL --查询当前时间的7⼩时前时间SELECT TO_CHAR(SYSDATE, 'YYYY/MM/DD HH24:MI:SS') AS NOW,TO_CHAR(SYSDATE - INTERVAL '7'day ,'YYYY/MM/DD HH24:MI:SS') AS PAST FROM DUAL --查询当前时间的7天前时间SELECT TO_CHAR(SYSDATE, 'YYYY/MM/DD HH24:MI:SS') AS NOW,TO_CHAR(SYSDATE - INTERVAL '7'month ,'YYYY/MM/DD HH24:MI:SS') AS PAST FROM DUAL --查询当前时间的7⽉前时间SELECT TO_CHAR(SYSDATE, 'YYYY/MM/DD HH24:MI:SS') AS NOW,TO_CHAR(SYSDATE - INTERVAL '7'year ,'YYYY/MM/DD HH24:MI:SS') AS PAST FROM DUAL --查询当前时间的7年前时间SELECT TO_CHAR(SYSDATE, 'YYYY/MM/DD HH24:MI:SS') AS NOW,TO_CHAR(SYSDATE - 8*INTERVAL '7'hour ,'YYYY/MM/DD HH24:MI:SS') AS PAST FROM DUAL --查询当前时间参数年、⽉、⽇、时、分、秒乘以⼀个数字倍数之前的时间以上就是oracle ⽇期操作语句总结的详细内容,更多关于oracle ⽇期操作的资料请关注其它相关⽂章!。

Oracle数据库加减时间

Oracle数据库加减时间

ID USERNAME PASSWORD SJ
---------- ---------- ---------- ----------
1 John 1234 01-5月 -03
2 Jack 12345 02-5月 -03
---------- ---------- ---------- -----------
1 John 1234 01-MAY-2003
2 Jack 12345 02-MAY-2003
3 Rose 2345 20-APR-2003
1 John 1234 01-MAY-03
2 Jack 12345 02-MAY-03
3 Rose 2345 20-APR-03
4 Joe 384657 01-MAY-03
select trunc(sysdate ) from dual
select to_char(trunc(sysdate ,\'YYYY\'),\'YYYY\') from dual
5.oracle有毫秒级的数据类型
--返回当前时间 年月日小时分秒毫秒
select to_char(current_timestamp(5),\'DD-MON-YYYY HH24:MI:SSxFF\') from dual;
7 rows selected.
关于时间/日期的操作
1.日期时间间隔操作
当前时间减去7分钟的时间
select sysdate,sysdate - interval \'7\' MINUTE from dual
当前时间减去7小时的时间
select sysdate - interval \'7\' hour from dual

oracle日期函数

oracle日期函数

oracle⽇期函数oracle⽇期时间的加减法加法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秒⼀、常⽤⽇期数据格式1.Y或YY或YYY 年的最后⼀位,两位或三位Select to_char(sysdate,'Y') from dual;Select to_char(sysdate,'YY') from dual;Select to_char(sysdate,'YYY') from dual;2.Q 季度 1~3⽉为第⼀季度,2表⽰第⼆季度。

oracle日期、时间处理

oracle日期、时间处理

下午 00
SQL> alter session set time_zone='-11:00';
会话已更改。
SQL> select localtimestamp,to_char(sysdate,'DD-MM-YYYY HH:MI:SS AM') "SYSDATE" from dual;
x是一个data或number数据类型,函数将x转换成fmt指定格式的char数据类型,如果x为日期nlsparm=nls_date_language 控制返回的月份和日份所使用的语言。如果x为数字nlsparm=nls_numeric_characters 用来指定小数位和千分位的分隔符,以及货币符号。
Oracle关于时间/日期的操作
在oracle中有很多关于日期的函数,如:
1、add_months()用于从一个日期值增加或减少一些月份
date_value:=add_months(date_value,number_of_months)
例:
SQL> select add_months(sysdate,12) "Next Year" from dual;
next_day(,)
返回日期d后由dow给出的条件的第一天,dow使用当前会话中给出的语言指定了一周中的某一天,返回的时间分量与d的时间分量相同。
select next_day(''01-jan-2000'',''monday'') "1st monday",next_day(''01-nov-2004'',''tuesday'')+7 "2nd tuesday") from dual;1st monday 2nd tuesday03-jan-2000 09-nov-2004

oracle计算日期天数

oracle计算日期天数

oracle计算日期天数SQL 计算每个月的第一天,最后一天,本月的天数,ORACLE中日期加减(转载)sql server:--frist dayselect dateadd(dd,-datepart(dd,getdate())+1,getdate())--last dayselect dateadd(dd,-datepart(dd,getdate()) ,dateadd(mm,1,getdate()))--next month first dayselect dateadd(dd,-datepart(dd,getdate())+1,dateadd(mm,1,getdate()))--本月天数select datediff(dd,dateadd(dd,-datepart(dd,getdate())+1,getdate()), dateadd(dd,-datepart(dd,getdate())+1,dateadd(mm,1,getdate())))orselect datepart(dd,dateadd(dd,-1,dateadd(mm,1,cast(cast(year(getdate()) as varchar)+'-'+cast(month(getdate()) as varchar)+'-01' as datetime))))oracle--本月天数select to_number(to_char(last_day(sysdate),'DD')) from dual加法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时间加减的语句写法

oracle时间加减的语句写法

oracle时间加减的语句写法oracle数据库中,应该如何进行时间的加减运算呢?下文对时间加减的语句写法作了详细的介绍,如果您感兴趣,不妨一看。

oracle时间加减运算我们经常会用到,下面就为您介绍oracle时间加减的实现方法,如果您遇到过oracle时间加减的问题,不妨一看。

加法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时间加减的语句写法。

oracle的日期运算

oracle的日期运算
add_months(sysdate,-5*12) 在系统时间基础上延迟5年
上月末的日期:select last_day(add_months(sysdate, -1)) from dual;
本月的最后一秒:select trunc(add_months(sysdate,1),'MM') - 1/24/60/60 from dual
注意我这只是举了NLS_DATE_LANGUAGE,当然还有很多,
可查看
select * from nls_session_parameters
select * from V$NLS_PARAMETERS
8.
select count(*)
from ( select rownum-1 rnum
也可以这样
TO_DATE ('2002-08-26', 'YYYY-mm-dd', 'NLS_DATE_LANGUAGE = American')
4.
两个日期间的天数
select floor(sysdate - to_date('20020405','yyyymmdd')) from dual;
SQL> select sysdate ,to_char(sysdate,'hh') from dual;
SYSDATE TO_CHAR(SYSDATE,'HH')
-------------------- ---------------------
2003-10-13 19:35:21 07
not
in ( '1', '7' )

Oracle日期时间操作

Oracle日期时间操作

使用Oracle to_date方法【转】(2009-09-16 16:05:29)转载标签:oracleto_date日期杂谈分类:DataBase原文链接:/vc/www/16/2009-02/13332.html日期格式参数含义说明D 一周中的星期几DAY 天的名字,使用空格填充到9个字符DD 月中的第几天DDD 年中的第几天DY 天的简写名IW ISO标准的年中的第几周IYYY ISO标准的四位年份YYYY 四位年份YYY,YY,Y 年份的最后三位,两位,一位HH 小时,按12小时计HH24 小时,按24小时计MI 分SS 秒MM 月Mon 月份的简写Month 月份的全名W 该月的第几个星期WW 年中的第几个星期1.日期时间间隔操作当前时间减去7分钟的时间select sysdate,sysdate - interval ‘7’ MINUTE from dual当前时间减去7小时的时间select sysdate - interval ‘7’ hour from dual当前时间减去7天的时间select sysdate - interval ‘7’ day from dual当前时间减去7月的时间select sysdate,sysdate - interval ‘7’ month from dual当前时间减去7年的时间select sysdate,sysdate - interval ‘7’ year from dual时间间隔乘以一个数字select sysdate,sysdate - 8 *interval ‘2’ hour from dual2.日期到字符操作select sysdate,to_char(sysdate,’yyyy-mm-dd hh24:mi:ss’) from dualselect sysdate,to_char(sysdate,’yyyy-mm-dd hh:mi:ss’) from dualselect sysdate,to_char(sysdate,’yyyy-ddd hh:mi:ss’) from dualselect sysdate,to_char(sysdate,’yyyy-mm iw-d hh:mi:ss’) from dual参考oracle的相关关文档(ORACLE901DOC/SERVER.901/A90125/SQL_ELEMENTS4.HTM#48515) 3. 字符到日期操作select to_date(‘2003-10-17 21:15:37’,’yyyy-mm-dd hh24:mi:ss’) from dual具体用法和上面的to_char差不多。

oracle日期处理全集__日期加减全活儿.doc

oracle日期处理全集__日期加减全活儿.doc

1 x add_months(d,n)日期d 加n 个月SQL> SELECT SYSDATE AS This_Day,add_months(SYSDATE, 1) AS Next_Day FROM dual; THIS_DAY NEXT_DAY08・9月-10 08-10月JO2、last_day(d)包含(1的月份的最丿舌一天的日期SQL> select last_day(sysdate) as last_day from dual;LAST.DAY3()・9 月-103、new_time(d,a,b)时区的日期和吋间d在b时区的日期和吋间SQL> select to_char(sysdate;YYYY-MM-DD HH24:MI:SS*) as china,to_char(new_time(sysdate;est7GMT);YYYY-MM-DD HH24:MI:SS,) as GMT from dual; CHINA GMT2010-09-08 09:51:50 2010-09-08 14:51:504^ next_day(d,day)比日期d晚,rfl day指定的周几的日期SQL> select sysdate as this_day, next_day(sysdate,7) as next_sat from dual;THIS_DAY NEXT_SAT0&9 月-10 11-9月-10N天前的日期:SQL> select to_date(to_char(sysc!ate-5, 'yyyy・MM-dcT), ^yyyy-MM-dd1) from dual;5、sysdate当前的系统日期和时间6^ greatest(dl,d2,...dn)给出的日期列表中最后的日期SQL> select sysdate as this_day,greatest(sysdate,sysdate+1 ,sysdate+2) as max_day from dual; THIS_DAY MAX_DAY0&9 月-10 10・9 月-107、least(dl,k2,...dn)给出的日期列表中最早的日期SQL> select sysdate as this_day,least(sysdate,sysdate+1 .sysdate-1) as min_day from dual;THIS_DAY MIN_DAY08・9月-10 07・9月-108、to_char(d 口期d按fmt指定的格式转变成字符串SQL> select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') as today from dual;TODAY2010-09-08 10:37:089、to_date(st 字符串st按fmt指定的格式转成日期值,若fmt忽略,st要用缺省格式SQL> select to_date(*2010-09-08 10:37:087YYYY-MM-DD HH24:MI:SS,) as today from dual; TODAY08・9月-1010、round(d [,fmt]) 口期d按fmt指定格式舍入到最近的日期SQL> select to_char(sysdate;YYYY-MM-DD HH24:MI:SS') as this ,round(sysdate) as round_day ,to_char(sysdate+1 /6;YYYY-MM-DD HH24:MI:SS r) as next_4hour ,round(sysdate+1/6) as round_dayfrom dual;THIS ROUND.DAY NEXT_4HOUR ROUND_DAY2010-09-08 10:52:45 08-9月-10 2010-09-08 14:52:45 09-9月-1011、trunc(d [,fmt])日期d按fmt指定格式截断到最近的口期SQL> select to_char(sysdate;YYYY-MM-DD HH24:MI:SS') as this,trunc(sysdate) as trunc_day,to_char(sysdate+1 /6,'YYYY-MM-DD HH24:MI:SS*) as next_4hour ,trunc(sysdate+1/6) astrunc_dayfrom dual;THIS TRUNC.DAY NEXT_4HOUR TRUNC.DAY2010-09-08 10:56:18 08-9月-10 2010-09-08 14:56:18 08-9月・10to_date字符串类型转为换日期类型字符串中的相应位置上的字符,必须符合时间范圉的限制查询Oracle日期格式select * from nls_database_parameters;得到结果如下表:表中NLS_DATE_FORMAT表示日期格式.PARAMETER VALUENLS_LANGUAGE AMERICANNLS_TERRITORY AMERICANLS.CURRENCY $NLS_ISO_CURRENCY AMERICANLS_NUMERIC_CHARACTERSNLS_CHARACTERSET ZHS16GBKNLS CALENDAR GREGORIANNLS_DATE_FORMAT DD-MON-RRNLS_DATE_LANGUAGE AMERICANNLS_SORT BINARYNLS_TIME_FORMAT HH.MI.SSXFF AMNLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AMNLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZH:TZMNLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZH:TZMNLS_DUAL_CURRENCY $P BINARYNLS_NCHAR_CHARACTERSET ZHS16GBKNLS_RDBMS_VERSION 8.1.7.0.0或者查询V$NLS_PARAMETERS 表,select * from V$NLS_PARAMETERS;也有类似结果SQL>select to_date(*2004-l 1-12 12-07-32*,*yyyy-mm-dd hh24-mi-ss*) value from dual;VALUE2004」1.12 12:07:32SQL>select to_date('20041015*) value from dual;VALUE2004」0」5 00:00:00SQL>select to_date('20041315') value from dual;ERROR位于第1行:ORA-01861:文字与格式字符串不匹配sysdate当前日期和时间SQL>select sysdate value from dual;VALUE2003.11.23 17:09:01last_day本月最后一天SQL>select last_day(sysdate) value from dual;VALUE2003.11.30 17:08:17add_months(d,n)日期d后推n个月SQL>select add_months(sysdate,2) value from dual;VALUE2005.01.23 17:10:21 next_day(d,day)日期d Z后的第一周屮,指定的那天(指定星期的第儿天)是什么日期SQL>select next_day(sysdateJ) value from dual;VALUE2004.11.28 17:38:55[oracle/plsql]oracle日期处理完全版日期处理完全版TO.DATE 格式Day:dd number 12dy abbreviated friday spelled out fridayddspth spelled out, ordinal twelfthMonth:mm number 03mon abbreviated marmonth spelled out marchYear:yy two digits 98yyyy four digits 199824小吋格式下吋间范围为:0:00:00 - 23:59:59....12小时格式下时间范围为:1:00:00- 12:59:59 ....1.H期和字符转换函数用法(to_date,to_char)2.select to_char( to_date(222/J,)/Jsp,) from dual显示Two Hundred Twenty-Two3.求某天是星期儿select to_char(to_date(,2002-08-26',,yyyy-mm-dd,),,day,) from dual;星期一select to_char(to_date('2002-08-26\,yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE = American') from dual;monday设置日期语言ALTER SESSION SET NLS_DATE_LANGUAGE二'AMERICAN';也可以这样TO.DATE C2002-08-26\ 'YYYY・mm・dd;,NLS_DATE_LANGUAGE = American*)4.两个tl期问的天数select floor(sysdate ・ to_date(,20020405','yyyymmdd')) from dual;5.时间为null的用法select id, active_date from table 1UNIONselect 1, TO_DATE(nuil) from dual;注意要用TO_DATE(null)a_date between to_date('20011201 ','yyyymmdd*) and to_date('20011231 '/yyyymmdd')那么12月31号中午12点之后和12月1号的12点之前是不包含在这个范围之内的。

Oracle日期加减运算

Oracle日期加减运算

Oracle⽇期加减运算-- Start我们都知道数字可以进⾏加、减、乘、除等运算。

那么,⽇期可不可以呢?答案是,⽇期只能进⾏加、减运算。

在开始操作⽇期之前,我们先了解⼀下 Oracle ⽀持哪些⽇期数据类型,如下所⽰:[sql]1. DATE2. TIMESTAMP3. TIMESTAMP WITH TIME ZONE4. TIMESTAMP WITH LOCAL TIME ZONE5. INTERVAL DAY TO SECOND6. INTERVAL YEAR TO MONTH下⾯,我们先看⼀个简单的例⼦吧,如下所⽰:[sql]1. select SYSDATE + INTERVAL '1' DAY, SYSDATE - INTERVAL '2' DAY from dual;2. select SYSTIMESTAMP + INTERVAL '1' DAY, SYSTIMESTAMP - INTERVAL '2' DAY from dual;如上所⽰,我们可以通过给⽇期加减⼀个时间间隔来计算⽇期,下⾯是更多的例⼦。

[sql]1. ⽇期+ 1 年 SYSDATE + INTERVAL '1' YEAR2. ⽇期+ 1 ⽉ SYSDATE + INTERVAL '1' MONTH3. ⽇期+ 1 ⽇ SYSDATE + INTERVAL '1' DAY4. ⽇期+ 1 时 SYSDATE + INTERVAL '1' HOUR5. ⽇期+ 1 分 SYSDATE + INTERVAL '1' MINUTE6. ⽇期+ 1 秒 SYSDATE + INTERVAL '1' SECOND7. ⽇期+ 1 ⽇1 时1 分 SYSDATE + INTERVAL '1 1:1' DAY TO MINUTE如果计算的是 DATE 类型,我们还可以采⽤如下的⽅式。

oracle日期计算

oracle日期计算

sysdate 为数据库服务器的当前系统时间。

to_char 是将日期型转为字符型的函数。

to_date 是将字符型转为日期型的函数,一般使用yyyy-mm-dd hh24:mi:ss格式,当没有指定时间部分时,则默认时间为00:00:00dual 表为sys用户的表,这个表仅有一条记录,可以用于计算一些表达式,如果有好事者用sys 用户登录系统,然后在dual 表增加了记录的话,那么系统99.999%不能使用了。

为什么使用的时候不用sys.dual 格式呢,因为sys 已经为dual 表建立了所有用户均可使用的别名。

一年的第一天SELECT to_date(to_char(SYSDATE,'yyyy')||'-01-01','yyyy-mm-dd' ) FROM dual季度的第一天SELECT to_date(to_char(SYSDATE,'yyyy-')|| lpad(floor(to_number(to_char(SYSDATE,'mm'))/3)*3+1,2,'0')|| '-01', 'yyyy-mm-dd') FROM dualfloor 为向下取整lpad 为向左使用指定的字符扩充字符串,这个扩充字符串至2位,不足的补'0'。

当天的半夜SELECT trunc(SYSDATE)+1-1/24/60/60FROM dualtrunc 是将sysdate 的时间部分截掉,即时间部分变成 00:00:00Oracle中日期加减是按照天数进行的,所以+1-1/24/60/60 使时间部分变成了23:59:59。

Oracle 8i 中仅支持时间到秒,9i以上则支持到1/100000000 秒。

上个月的最后一天SELECT trunc(last_day(add_months(SYSDATE,-1)))+1-1/24/60/60 FROM dualadd_months 是月份加减函数。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1、add_months(d,n) 日期d加n个月SQL> SELECT SYSDA TE AS This_Day,add_months(SYSDATE,1) AS Next_Day FROM dual; THIS_DAY NEXT_DAY-------------- ------------08-9月-10 08-10月-102、last_day(d) 包含d的月份的最后一天的日期SQL> select last_day(sysdate) as last_day from dual;LAST_DAY-----------30-9月-103、new_time(d,a,b) 时区的日期和时间d在b时区的日期和时间SQL> select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') as china,to_char(new_time(sysdate,'est','GMT'),'YYYY-MM-DD HH24:MI:SS') as GMTfrom dual;CHINA GMT------------------- -------------------2010-09-08 09:51:50 2010-09-08 14:51:504、next_day(d,day) 比日期d晚,由day指定的周几的日期SQL> select sysdate as this_day, next_day(sysdate,7) as next_sat from dual;THIS_DAY NEXT_SAT-------------- --------------08-9月-10 11-9月-10N天前的日期:SQL> select to_date(to_char(sysdate-5, 'yyyy-MM-dd'), 'yyyy-MM-dd') from dual;5、sysdate 当前的系统日期和时间6、greatest(d1,d2,...dn) 给出的日期列表中最后的日期SQL> select sysdate as this_day,greatest(sysdate,sysdate+1,sysdate+2) as max_day from dual; THIS_DAY MAX_DAY-------------- --------------08-9月-10 10-9月-107、least(d1,k2,...dn) 给出的日期列表中最早的日期SQL> select sysdate as this_day,least(sysdate,sysdate+1,sysdate-1) as min_day from dual; THIS_DAY MIN_DAY-------------- --------------08-9月-10 07-9月-108、to_char(d [,fmt]) 日期d按fmt指定的格式转变成字符串SQL> select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') as today from dual;TODAY-------------------2010-09-08 10:37:089、to_date(st [,fmt]) 字符串st按fmt指定的格式转成日期值,若fmt忽略,st要用缺省格式SQL> select to_date('2010-09-08 10:37:08','YYYY-MM-DD HH24:MI:SS') as today from dual; TODAY--------------08-9月-1010、round(d [,fmt]) 日期d按fmt指定格式舍入到最近的日期SQL> select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') as this,round(sysdate) as round_day,to_char(sysdate+1/6,'YYYY-MM-DD HH24:MI:SS') as next_4hour,round(sysdate+1/6) as round_dayfrom dual;THIS ROUND_DAY NEXT_4HOUR ROUND_DAY------------------- -------------- ------------------- --------------2010-09-08 10:52:45 08-9月-10 2010-09-08 14:52:45 09-9月-1011、trunc(d [,fmt]) 日期d按fmt指定格式截断到最近的日期SQL> select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') as this,trunc(sysdate) as trunc_day,to_char(sysdate+1/6,'YYYY-MM-DD HH24:MI:SS') as next_4hour,trunc(sysdate+1/6) as trunc_dayfrom dual;THIS TRUNC_DAY NEXT_4HOUR TRUNC_DAY------------------- -------------- ------------------- --------------2010-09-08 10:56:18 08-9月-10 2010-09-08 14:56:18 08-9月-10to_date 字符串类型转为换日期类型字符串中的相应位置上的字符,必须符合时间范围的限制查询Oracle日期格式----------------------------------select * from nls_database_parameters;得到结果如下表: 表中NLS_DATE_FORMAT表示日期格式.PARAMETER V ALUE----------------------------------- -----------------------------------NLS_LANGUAGE AMERICANNLS_TERRITORY AMERICANLS_CURRENCY $NLS_ISO_CURRENCY AMERICANLS_NUMERIC_CHARACTERS .,NLS_CHARACTERSET ZHS16GBKNLS_CALENDAR GREGORIANNLS_DA TE_FORMAT DD-MON-RRNLS_DA TE_LANGUAGE AMERICANNLS_SORT BINARYNLS_TIME_FORMAT HH.MI.SSXFF AMNLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AMNLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZH:TZMNLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZH:TZM NLS_DUAL_CURRENCY $NLS_COMP BINARYNLS_NCHAR_CHARACTERSET ZHS16GBKNLS_RDBMS_VERSION 8.1.7.0.0或者查询V$NLS_PARAMETERS表,select * from V$NLS_PARAMETERS;也有类似结果SQL>select to_date('2004-11-12 12-07-32','yyyy-mm-dd hh24-mi-ss') value from dual; V ALUE-------------------2004.11.12 12:07:32SQL>select to_date('20041015') value from dual;V ALUE-------------------2004.10.15 00:00:00SQL>select to_date('20041315') value from dual;ERROR 位于第1 行:ORA-01861: 文字与格式字符串不匹配sysdate 当前日期和时间SQL>select sysdate value from dual;V ALUE-------------------2003.11.23 17:09:01last_day 本月最后一天SQL>select last_day(sysdate) value from dual;V ALUE-------------------2003.11.30 17:08:17add_months(d,n) 日期d后推n个月SQL>select add_months(sysdate,2) value from dual;V ALUE-------------------2005.01.23 17:10:21next_day(d,day) 日期d之后的第一周中,指定的那天(指定星期的第几天)是什么日期SQL>select next_day(sysdate,1) value from dual;V ALUE-------------------2004.11.28 17:38:55[oracle/plsql]oracle日期处理完全版日期处理完全版TO_DA TE格式Day:dd number 12dy abbreviated friday spelled out fridayddspth spelled out, ordinal twelfthMonth:mm number 03mon abbreviated marmonth spelled out marchYear:yy two digits 98yyyy four digits 199824小时格式下时间范围为:0:00:00 - 23:59:59....12小时格式下时间范围为:1:00:00 - 12:59:59 ....1.日期和字符转换函数用法(to_date,to_char)2.select to_char( to_date(222,'J'),'Jsp') from dual显示Two Hundred Twenty-Two3.求某天是星期几select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day') from dual;星期一select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE = American') fromdual;monday设置日期语言ALTER SESSION SET NLS_DATE_LANGUAGE='AMERICAN';也可以这样TO_DA TE ('2002-08-26', 'YYYY-mm-dd', 'NLS_DATE_LANGUAGE = American')4.两个日期间的天数select floor(sysdate - to_date('20020405','yyyymmdd')) from dual;5. 时间为null的用法select id, active_date from table1UNIONselect 1, TO_DATE(null) from dual;注意要用TO_DATE(null)6.a_date between to_date('20011201','yyyymmdd') and to_date('20011231','yyyymmdd')那么12月31号中午12点之后和12月1号的12点之前是不包含在这个范围之内的。

相关文档
最新文档