您当前的位置: 首页 >  sql

Phil Arist

暂无认证

  • 5浏览

    0关注

    276博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

oracle中常用的 SQL语句中进行时间加减

Phil Arist 发布时间:2022-04-27 09:32:53 ,浏览量:5

一:

numtodsinterval(,) ,x是一个数字,c是一个字符串, 表明x的单位,这个函数把x转为interval day to second数据类型

常用的单位有 ('day','hour','minute','second')

example

SQL> select sysdate,sysdate+numtodsinterval(3,'hour') as res from dual;

SYSDATE             RES ------------------- -------------------

2007-09-05 01:45:34   2007-09-05 04:45:34

numtoyminterval 与numtodsinterval函数类似,将x转为interval year to month数据类型

常用的单位有'year','month'

example

SQL> select sysdate,sysdate+numtoyminterval(3,'year') as res from dual;

SYSDATE             RES ------------------- -------------------

2007-09-05 01:54:53   2010-09-05 01:54:53

-----------------------------------------------------------------------------------------------------------------------

格式:NumToYMInterval(n, interval_unit);

n: 数值类型

interval_unit: 'YEAR', 'MONTH' ,或其他可以转换成这两个值之一的表达式

NumToYMInterval(1, 'YEAR') :一年后的间隔

NumToYMInterval(-1, 'MONTH'): 一个月前

小数会被计算成整数后,再做计算:

select sysdate + numtoyminterval(0.1, 'MONTH')  as future from dual;\

FUTURE

------------------

11-OCT-13

该函数的结果是:”INTERVAL YEAR TO MONTH literal“。不能与数值做运算。

select 1 + NumToYMInterval(1, 'MONTH') from dual

Oracle会返回一个错误。

做日期运算时,这个函数非常有用。例如:取一个月后的日期:

select sysdate + NumToYMInterval(1, 'MONTH') 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秒

对当前日期增加一个小时: 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:17

timestamp的操作方法与上面类似; 求两个日期之差: 例:求2007-5-23 21:23:34与当前时间之间的差值。 SQL> select sysdate-to_date(’20070523 21:23:34′,’yyyy-mm-dd hh24:mi:ss’) dt from dual ;

关注
打赏
1662360869
查看更多评论
立即登录/注册

微信扫码登录

0.1908s