这篇文章主要介绍了神谕中截止日期详细用法示例,包括期和字符转换函数用法、字符串和时间互转、求某天是星期几、两个日期间的天数、月份差等用法
截止日期格式(以时间: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;
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。