oracle中to_date详细用法示例(oracle日期格式转换)

oracle中to_date详细用法示例(oracle日期格式转换)

这篇文章主要介绍了神谕中截止日期详细用法示例,包括期和字符转换函数用法、字符串和时间互转、求某天是星期几、两个日期间的天数、月份差等用法

截止日期格式(以时间:2007-11-02 13:45:25为例)

1.日期和字符转换函数用法(截止日期,截止字符)

复制代码代码如下:从双重的中选择to_char(sysdate, yyyy-mm-dd hh24:mi:ss )作为nowTime//日期转化为字符串从dual中选择to_char(sysdate, yyyy )作为现在年份;//获取时间的年select to_char(sysdate, mm )as now month from dual;//获取时间的月从双重的中选择to_char(系统日期, dd )作为nowDay//获取时间的日从双重的中选择to_char(系统日期, hh24 )作为nowHour//获取时间的时select to_char(sysdate, mi )as now minute from dual;//获取时间的分select to_char(sysdate, ss )作为现在dual的第二个;//获取时间的秒

2.字符串和时间互转复制代码代码如下:select to _ date( 2004-05-07 13:23:44 , yyyy-mm-DD hh24:mi:ss )from dual select to _ char(to _ date(222, J , Jsp) from dual //显示两百二十二个

3.求某天是星期几复制代码代码如下:从双重的中选择to_char(to_date(2002-08-26 , yyyy-mm-dd , day );//星期一select to _ char(to _ DATE( 2002-08-26 , yyyy-mm-dd ,日, NLS _日期_语言=美国)来自dual//星期一//设置日期语言更改会话集NLS _日期_语言=美国;//也可以这样截止日期( 2002年8月26日,年月日,‘NLS日期语言=美国)

4.两个日期间的天数复制代码代码如下:从双重的中选择floor(sysdate-to-date( 2002 04 05 , yyyymmdd );

5.时间为空的用法复制代码代码如下:select id,active _ DATE from table 1 UNION select 1,TO _ DATE(null from dual;//注意要用截止日期(空)

6.月份差复制代码代码如下:介于截止日期( 20011201 , yyyymmdd )和to_date(20011231 , yyyymmdd) //之间的_日期那么12月31号中午12点之后和12月一号的12点之前是不包含在这个范围之内的。 //所以,当时间需要精确的时候,觉得收件人_字符还是必要的

7.日期格式冲突问题输入的格式要看你安装的神谕字符集的类型,比如:US7ASCII,日期格式的类型就是:"2001年一月一日"复制代码代码如下:更改系统设置NLS _日期_语言=美国更改会话集NLS _日期_语言=美国//或者在截止日期中写select to _ char(to _ DATE( 2002-08-26 , yyyy-mm-dd ,日, NLS _日期_语言=美国)来自dual//注意我这只是举了非线性系统(Non-Linear System)日期语言,当然还有很多,可查看select * from nls _会话_参数select * from nls _参数

8.查询特殊条件天数复制代码代码如下:select count(*)from(select rownum-1 rnum from all _ objects其中rownum=to_date(2002-02-28 , yyyy-mm-DD )-to _ date( 2002-02-01 , yyyy-mm-DD )1)where to _ char( to _ date( 2002-02-01 , yyyyy-mm-DD )rnum-1, D ) not in ( 1 , 7 )

//查找2002-02-28至2002-02-01间除星期一和七的天数//在前后分别调用数据库管理系统实用程序.GET_TIME,让后将结果相减(得到的是1/100秒,而不是毫秒)

9.查找月份复制代码代码如下:从双重的中选择MONTHS _ between(to _ date( 01-31-1999 , MM-DD-yyy ),to_date(12-31-1998 , MM-DD-yyy ) MONTHS ;//结果为:1从双重的中选择MONTHS _ between(to _ date( 02-01-1999 , MM-DD-yyy ),to_date(12-31-1998 , MM-DD-yyy ) MONTHS ;//结果为:1.03225806451613

10.第二天的用法复制代码代码如下:下一天(日期,日)周一至周日,格式代码日周一至周日,格式代码模具1-7,格式代码D

11.获得小时数复制代码代码如下://extract()找出日期或间隔值的字段值选择提取(从时间戳开始的小时2001-02-16 2:38:40 )FROM offer SELECT sysdate,to_char(sysdate, hh )FROM dual;

SYSDATE TO_CHAR(SYSDATE, HH) - - 2003-10-13 19:35:21 07

select sysdate,to_char(sysdate, hh24 )from dual;

SYSDATE TO_CHAR(SYSDATE, HH24) - - 2003-10-13 19:35:21 19

12.年月日的处理复制代码代码如下:选择旧日期,新日期,年,月,ABS ( TRUNC(新日期-添加月(旧日期,年* 12个月)))天从(选择TRUNC(月之间(新日期,旧日期)/12)年,MOD(月之间(新日期,旧日期)),12)月,新日期,旧日期从(选择租用日期旧日期,添加月(租用日期,行数)行数新日期来自emp))

13.处理月份天数不定的办法复制代码代码如下:select to _ char(add _ months(last _ day(sysdate)1,-2), yyyymmdd ),last_day(sysdate) from dual

14.找出今年的天数复制代码代码如下:select add_months(trunc(sysdate, year ),12) - trunc(sysdate, year) from dual //闰年的处理方法to _ char(last _ day(to _ date( 02 | |:year, mmyyyy ), dd ) //如果是28就不是闰年

yyyy与rrrr的区别

复制代码代码如下字体1999年至2001年

16.不同时区的处理复制代码代码如下:select to_char( NEW_TIME( sysdate, GMT , EST , dd/mm/yyyy hh:mi:ss ),sysdate from dual

17.5秒钟一个间隔复制代码代码如下:Select TO _ DATE(FLOOR(TO_CHAR(sysdate, SSSSS)/300) * 300, SSSSS )、TO _ CHAR(sysdate, SSSSS )from dual//2002-11-1 9:55:00 35786//SSSSS表示5位秒数

18.一年的第几天复制代码代码如下:select TO_CHAR(SYSDATE, DDD ),SYSDATE from dual//310 2002-11-6 10:03:51

19.计算小时,分,秒,毫秒复制代码代码如下:选择天,一个,TRUNC(一个* 24)小时,TRUNC (A * 24 * 60 - 60 * TRUNC(A * 24))分钟,TRUNC(A * 24 * 60 * 60-60 * TRUNC(A * 24 * 60))秒,TRUNC(A * 24 * 60 * 60 * 100-100 * TRUNC(A * 24 * 60 * 60))毫秒来自(选择TRUNC(系统日期)天,SYSDATE-TRUNC(SYSDATE)A来自dual)选择

//下限((日期2-日期1) /365)作为年//地板((日期2-日期1,365) /30)作为月//d(mod(日期2-日期1,365),30)作为日。

第二天函数复制代码代码如下://返回下个星期的日期,天为1-7或星期日-星期六,1表示星期日下一天(系统日期,6)是从当前开始下一个星期五。后面的数字是从星期日开始算起。 //1 2 3 4 5 6 7 //日一二三四五六select(sysdate-to _ date( 2003-12-03 12:55:45 , yyyy-mm-DD hh24:mi:ss )* 24 * 60 * 60 from dual//日期返回的是天然后转换为悬浮物

21,回合[舍入到最接近的日期](日:舍入到最接近的星期日)复制代码代码如下:从双重的中选择系统日期S1,圆(系统日期)S2,圆(系统日期,年)年,round(系统日期,“月”)月,round(系统日期,日)日

22、trunc[截断到最接近的日期,单位为天] ,返回的是日期类型

复制代码代码如下:select sysdate S1,trunc(sysdate) S2,//返回当前日期,无时分秒trunc(系统日期,“年份”)年,//返回当前年的一月一日,无时分秒trunc(系统日期,月)月,//返回当前月的一日,无时分秒trunc(sysdate, day) DAY //返回当前星期的星期天,无时分秒从双重

23,返回日期列表中最晚日期

复制代码代码如下:选择最大( 01-1月-04,04-1月-04,10-2月-04 )来自对偶

24.计算时间差复制代码代码如下:注:甲骨文时间差是以天数为单位,所以换算成年月,日选择floor(to _ number(sysdate-to _ date( 2007-11-02 15:55:03 , yyyy-mm-DD hh24:mi:ss )/365)作为dual //的跨度年时间差-年select ceil(moths _ between(sysdate-to _ date( 2007-11-02 15:55:03 , yyyy-mm-dd hh24:mi:ss ))作为双重的的跨度月份//时间差-月选择floor(to _ number(sysdate-to _ date( 2007-11-02 15:55:03 , yyyy-mm-dd hh24:mi:ss ))作为dual //的跨度日时间差-天选择楼层(to _ number(sysdate-to _ date( 2007-11-02 15:55:03 , yyyy-mm-DD hh24:mi:ss )* 24)作为span dual的工作时间//时间差-时选择楼层(to _ number(sysdate-to _ date( 2007-11-02 15:55:03 , yyyy-mm-DD hh24:mi:ss )* 24 * 60)作为dual距离dual的分钟数//时间差-分选择floor(to _ number(sysdate-to _ date( 2007-11-02 15:55:03 , yyyy-mm-DD hh24:mi:ss )* 24 * 60 * 60)作为span dual的秒数//时间差-秒

25.更新时间复制代码代码如下://oracle时间加减是以天数为单位,设改变量为n,所以换算成年月,日select to_char(sysdate, yyyy-mm-dd hh24:mi:ss ),to_char(sysdate n*365, yyyy-mm-dd hh24:mi:ss )作为双重的的新时间//改变时间-年select to_char(sysdate, yyyy-mm-dd hh24:mi:ss ),add_months(sysdate,n)作为dual //的新时间改变时间-月select to_char(系统日期, yyyy-mm-dd hh24:mi:ss ),to_char(系统日期n, yyyy-mm-dd hh24:mi:ss )作为双重的的新时间//改变时间-日select to_char(系统日期, yyyy-mm-dd hh24:mi:ss ),to_char(系统日期n/24, yyyy-mm-dd hh24:mi:ss )作为双重的的新时间//改变时间-时select to_char(系统日期, yyyy-mm-dd hh24:mi:ss ),to_char(系统日期n/24/60, yyyy-mm-dd hh24:mi:ss )作为双重的的新时间//改变时间-分从dual //中选择to_char(系统日期、 yyyy-mm-dd hh24:mi:ss )、to_char(系统日期n/24/60/60,“yyyy-mm-dd hh24:mi:ss”)作为新时间改变时间-秒

26.查找月的第一天,最后一天复制代码代码如下:SELECT Trunc(Trunc(SYSDATE, MONTH) - 1, MONTH) First_Day_Last_Month,Trunc(SYSDATE, MONTH )-1/86400 Last _ Day _ Last _ MONTH,Trunc(SYSDATE, MONTH) First_Day_Cur_Month,LAST_DAY(Trunc(SYSDATE, MONTH ))1-1/86400 Last _ Day _ Cur _ MONTH from dual;

oracle中to_date详细用法示例(oracle日期格式转换)