大佬教程收集整理的这篇文章主要介绍了oracle date 操作,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
使用Oracle的date类型时,最好使用24小时制。date类型精确的秒。
Oracle的日期在24小时制中00:00:00 在Oracle中表示为叫做上午12点,也就是零点。我们中午12点叫做下午12点。呵呵。
世界是这样循环的 : 上午12点 -上午12点01 -上午1点 --上午11:59 :59 --下午12点 - 下午12点 02 - 下午1点 -下午11:59:59
关于日期函数 add_months (d,n) 和last_day(d),round(d,【fmt】)
add_months 中的d 如果没有时间值,结果为下个月的当前日的开始日期 -00:00:00上午12点。 如果有时间值 ,结果为下月的当前日的时间加时间值。
如果d为当前月的最后一天,结果为下个月的最后一天。哈哈。
例如:add_months(to_date('2007-02-27 12:01','yyyy-mm-dd hh24:mi'),1) = 2007-3-27 12:01:00
add_months(to_date('2007-02-27','yyyy-mm-dd '),1) = 2007-03-27 00:00:00
add_months(to_date('2007-02-28 12:01',1) = 2007-3-31 12:01:00
last_day 当前月的最后一天的00:00。
round 四舍五入 ,格式为year ,舍入到1月1日, month ,舍入到该月第一日, 大于16日,为下月。day 最近的星期天。
例如:
round( (to_date('2007-10-19 13:00:00 ','yyyy-mm-dd hh24:mi:ss') ),'day' ) = 2007-10-21
trunc 与round相似,但不四舍五入。
trunc(d,fmt)
extract (fmt from d)
fmt 可取为 year,month,day,hour,minute,second .
总结:Oracle的日期函数默认操作日期,既不包括时间。 如果有时间的话就加上时间,但不做处理。默认都是day。
Oracle关于时间/日期的操作
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 dual
2.日期到字符操作
SELEct sysdate,TO_CHAR(sysdate,’yyyy-R_554_11845@m-dd hh24:mi:ss’) from dual
SELEct sysdate,’yyyy-R_554_11845@m-dd hh:mi:ss’) from dual
SELEct sysdate,’yyyy-DDd hh:mi:ss’) from dual
SELEct sysdate,’yyyy-R_554_11845@m 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-R_554_11845@m-dd hh24:mi:ss’) from dual
具体用法和上面的TO_CHAR差不多。
4. trunk/ ROUND函数的使用
SELEct TRUNC(SYSDATE,’YEAR’) from dual
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;
--返回当前 时间的秒毫秒,可以指定秒后面的精度(最大=9)
SELEct TO_CHAR(CURRENT_TIMESTAMP(9),’MI:SSxFF’) from dual;
6.计算程序运行的时间(ms)
declare
type rc is ref cursor;
l_rc rc;
l_dummy all_objects.object_name%type;
l_start number default DBMS_utility.get_time;
begin
for I in 1 .. 1000
loop
open l_rc for
’SELEct object_name from all_objects ’||
’where object_id = ’ || i;
fetch l_rc into l_dummy;
close l_rc;
end loop;
DBMS_output.put_line
( round( (DBMS_utility.get_time-l_start)/100,2 ) ||
’ seconds...’ );
end;
№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,'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,'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),'平年') from dual;
№16:得到日期的季度
SELEct ceil(to_number(TO_CHAR(sysdate,'mm'))/@R_607_8501@om dual;
SELEct TO_CHAR(sysdate,'Q') from dual;
以上是大佬教程为你收集整理的oracle date 操作全部内容,希望文章能够帮你解决oracle date 操作所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。