Oracle   发布时间:2022-05-17  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了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,请注明来意。
标签: