精华内容
下载资源
问答
  • oracle时间

    2019-06-05 17:29:40
    1、numtodsinterval(,) ,x是一个数字,c是一个字符串, 表明x的单位,这个函数把x转为interval day to second数据类型 常用的单位有 (‘day’,‘hour’,‘minute’,‘second’) 2、numtoymin...

    转载地址:https://blog.csdn.net/zhan_zehong/article/details/50175169

    1、numtodsinterval(,) ,x是一个数字,c是一个字符串,

    表明x的单位,这个函数把x转为interval day to second数据类型
    常用的单位有 (‘day’,‘hour’,‘minute’,‘second’)

    2、numtoyminterval 与numtodsinterval函数类似,将x转为interval year to month数据类型
    常用的单位有’year’,‘month’


    作者:zhan_zehong
    来源:CSDN
    原文:https://blog.csdn.net/zhan_zehong/article/details/50175169
    版权声明:本文为博主原创文章,转载请附上博文链接!

    展开全文
  • Oracle 时间累加、

    2019-08-26 17:29:15
    Oracle时间累加、 -- 作用 日-1, 数据库的时间是字符串,所以我进行了转化 打印出的格式是 2018-08-25 select to_char(to_date(MAX(STAT_DATE) -1, 'yyyymmdd hh'),'yyyy-mm-dd ') as lastUpdateTime from TP_...

    Oracle时间累加、减

    	
    SELECT T.PAGEVIEWS_QTY 浏览数, T.PAY_VISITORS_QTY 付费访客数, T.FREE_VISITORS_QTY 免费访客数, 这里是用T/T1的浏览数
    T.NEW_VISITORS_QTY 新访客数 FROM TP_SHOP_OPERATION 
    (
    	SELECT 当前时间+1, 浏览数 FROM TP_SHOP_OPERATION 
    	WHERE 当前时间= 条件时间 -1) a  -- 这里就拿到了当天时间与昨天的浏览数
    ) T1
    WHERE T.时间=T1.时间 and T.时间 = 前端传的条件 and T.平台 = 前端传的平台, and T.店铺= 前端传的店铺
    
    -- 作用 日-1, 数据库的时间是字符串,所以我进行了转化 打印出的格式是 2018-08-25
    
    select to_char(to_date(STAT_DATE -1, 'yyyymmdd hh'),'yyyy-mm-dd ') as lastUpdateTime  from TP_SHOP_OPERATION where STAT_DATE = '20190825';
    
    
    
    -- 作用 月-1, 数据库的时间是字符串,所以我进行了转化 打印出的格式是 2018-07
    select to_char(to_date(STAT_DATE -1, 'yyyymm'),'yyyy-mm ') as lastUpdateTime  from TP_SHOP_OPERATION where STAT_DATE = '20190825';
    
    
    
    -- 作用 月-1, 数据库的时间是字符串,所以我进行了转化 打印出的格式是 201807
    select to_char(to_date(STAT_DATE -1, 'yyyymm'),'yyyymm ') as lastUpdateTime  from TP_SHOP_OPERATION where STAT_DATE = '20190825';
    
    
    
    -- 作用 日-1, 数据库的时间是字符串,所以我进行了转化 打印出的格式是 20180725
    select to_char(to_date(STAT_DATE -1, 'yyyymmdd'),'yyyymmdd ') as lastUpdateTime  from TP_SHOP_OPERATION where STAT_DATE = '20190825';
    
    
    
    -- 还可以这样用,不过这样有坑,就是如果时间是2001-1,去减一个月就会出现问题。
    SELECT TRUNC(STAT_DATE)-1 AS A from TP_SHOP_OPERATION STAT_DATE = '20190825';
    
    

    QQ群:914084240,一起交流,成长!

    展开全文
  • Oracle sysdate 时间

    千次阅读 2018-11-13 01:48:00
    Oracle sysdate 时间

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

    也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

                   

    加法 

     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秒

               

    给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

    这里写图片描述
    展开全文
  • oracle 时间相加

    万次阅读 2014-03-03 09:41:58
    ORACLE 时间相加(HH:MM) 1.分钟转成不同格式的时间 数据库里有字段 存的分钟 ① 现在想显示成HH:MM格式 假设为514分钟 SELECT to_char((to_date('00:00','HH24:MI')+514/24/60),'HH24:MI') from dual ...

    ORACLE 时间相加(HH:MM)

    1.分钟转成不同格式的时间
    数据库里有个字段 存的分钟
    ① 现在想显示成HH:MM格式 假设为514分钟
    SELECT to_char((to_date('00:00','HH24:MI')+514/24/60),'HH24:MI') from dual
    输出结果:
     08:34
    ②如果存的是秒 同理  
     SELECT to_char((to_date('00:00:00','HH24:MI:SS')+514/24/60/60),'HH24:MI:SS') from dual
    输出结果:
    00:08:34 

    至于显示成其他的格式,也就不成问题了
    2.时分相加
    至于为什么要写这个,是因为oracle里没有两个时间相加的处理,两个to_date相减可以,相加就出错了:
     
    数据库里有两个字段 存的都是HH:MM格式的时间
    假设一个是本月上午缺勤时间合计: 08:30(8个半小时)
    另外一个是本月下午缺勤时间合计: 00:30(半小时)
    现在想要总缺勤时间,显示成 HH:MM格式
    做法有两种
    ① 正常的逻辑运算(代码或者PLSQL实现的应该比这个容易的多,仅限于SQL实现):

    select  LPAD((substr('08:30',1,2) + substr('00:30',1,2)+(substr('08:30',length('08:30')-1,2)+substr('00:30',length('00:30')-1,2))/60),2,'0') || ':' ||
     LPAD(mod((substr('08:30',length('08:30')-1,2)+substr('00:30',length('00:30')-1,2)),60),2,'0') from  dual 
    看起来很复杂,而实际上就是把小时相加,分钟相加,之后把分钟满60的小时进位,取余的显示:
    取前两位相加得小时:(是因为不确定数据储存的格式是不是严格的HH:MM,而不能借正则分隔“:”)
     
    (substr('08:30',1,2) + substr('00:30',1,2) 
    取后两位相加得分钟:
    (substr('08:30',length('08:30')-1,2)+substr('00:30',length('00:30')-1,2)) 
    把分钟满60的小时进位得显示用的小时:
    (substr('08:30',length('08:30')-1,2)+substr('00:30',length('00:30')-1,2))/60 
    现在小时算完了,不足两位左补零:
     LPAD((substr('08:30',1,2) + substr('00:30',1,2)+(substr('08:30',length('08:30')-1,2)+substr('00:30',length('00:30')-1,2))/60),2,'0')  
    把分钟取余得显示用的分钟:
    mod((substr('08:30',length('08:30')-1,2)+substr('00:30',length('00:30')-1,2)),60)
     
    现在分钟算完了,不足两位左补零:
    LPAD(mod((substr('08:30',length('08:30')-1,2)+substr('00:30',length('00:30')-1,2)),60),2,'0') 
    最后连上“:”就变成上述的SQL,得到的时间用HH:MM显示了

    输出结果:
    09:00

    ②函数实现:
    SELECT to_char(to_date('00:00','HH24:MI') +(((to_date('08:30','HH24:MI') - trunc(to_date('08:30','HH24:MI'))) *24*60  + (to_date('00:30','HH24:MI') - trunc(to_date('00:30','HH24:MI'))) *24*60)/24/60),'HH24:MI') from dual
    同样看起来很复杂
    首先把HH:MM的换成数值:
    to_date('08:30','HH24:MI') - trunc(to_date('08:30','HH24:MI'))    
    输出结果:.354166666666666666666666666666666666666(其实是代表了一个时间,是以天为单位的)
    现在
    *24*60  把数值换成分钟:
    (to_date('08:30','HH24:MI') - trunc(to_date('08:30','HH24:MI'))) *24*60 
    输出结果:510
    也就是把
    08:30 变成了510分
    (to_date('00:30','HH24:MI') - trunc(to_date('00:30','HH24:MI'))) *24*60 
    输出结果:30(时间是.020833333333333333333333333333333333333)这两个
    也就是把00:30 变成了30分 
    然后把两个分钟相加:
     ((to_date('08:30','HH24:MI') - trunc(to_date('08:30','HH24:MI'))) *24*60  + (to_date('00:30','HH24:MI') - trunc(to_date('00:30','HH24:MI'))) *24*60)
     输出结果:
    540
    剩下的就是显示处理了,和1里面的做法一致:
     
    to_char(to_date('00:00','HH24:MI') +(((to_date('08:30','HH24:MI') - trunc(to_date('08:30','HH24:MI'))) *24*60  + (to_date('00:30','HH24:MI') - trunc(to_date('00:30','HH24:MI'))) *24*60)/24/60),'HH24:MI')
    输出结果: 

    3.  不论是方法①还是方法②, 这里都存在一个问题:如果时间相加之后超出23:59,系统就会报错,目前我用的涉及不到这个 就没写出来,如果有用到的直接再转成DD:HH:MM的格式就行了,也就是把小时数满24的进位取显示用的天   
    SELECT to_char(to_date('01 00:00','DD HH24:MI') +(((to_date('23:30','HH24:MI') - trunc(to_date('23:30','HH24:MI'))) *24*60  + (to_date('01:30','HH24:MI') - trunc(to_date('01:30','HH24:MI'))) *24*60)/24/60-1),'DD HH24:MI') from dual 
    输出结果:01 01:00(25小时)



    oracle 时间相减
    select to_char((TO_DATE('1970-01-01', 'yyyy-MM-dd') +
                   (to_date('10:10:10', 'HH24:mi:ss') -
                   to_date('12:10:10', 'HH24:mi:ss'))), 'HH24:mi:ss')
      from dual;

    对当前日期增加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

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

    参考:
    http://hi.baidu.com/fssyleihen/item/c267b7b428034aa1eaba9396
    展开全文
  • Oracle时间

    千次阅读 2012-04-01 16:54:26
    加法  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') f
  • 如果你的sql需要对传入的年月日期格式进行处理,比如把日期提前一个月或者推后一个月,可以使用ADD_MONTHS函数: ADD_MONTHS(date, num) 其中,date是你传入的参数,num是你要提前或者推后的月的个数,比如,提前...
  • oracle时间运算我们经常会用到,下面就为您介绍oracle时间的实现方法,如果您遇到过oracle时间的问题,不妨看。 加法 --加1年 SELECT sysdate,add_months(sysdate,12) FROM dual;
  • oracle 查询时间

    2018-07-19 11:01:31
    select 时间, TO_DATE(时间,'YYYY-MM-DD hh24:mi:ss')+numtodsinterval(时间戳,'hour') from TableTime T ; 如: select T.DATE , TO_DATE(T.DATE,'YYYY-MM-DD hh24:mi:ss')+numtodsinterval(T.WARNING_TIME,'hour')...
  • oracle时间一年的写法

    千次阅读 2019-05-16 10:58:00
    select add_months(date'2019-5-15',-12) from dual; -- 2018-5-15 通过add_months(x,y)函数,在给定的时间x+固定的月份y ... --2018-5-15 通过interval函数,这用来表示时间间隔,有固定的格式...
  • Oracle sysdate时间

    千次阅读 2018-02-08 23:12:40
    加法 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
  • oracle 时间相减,月份相加

    千次阅读 2013-05-01 09:34:48
    oracle 两个时间相减默认的是天数 oracle个时间相减默认的是天数*24 为相差的小时数 oracle个时间相减默认的是天数*24*60 为相差的分钟数 oracle个时间相减默认的是天数*24*60*60 为相差的秒数 ...
  • oracle sql 加减时间

    2017-01-12 17:06:16
    update table t set t.time = decode(t.time,'',t.time,to_char(to_date(t.time, 'hh24:mi')+numtodsinterval(:times, 'minute'),'hh24:mi'))
  • Oracle 时间操作

    2009-09-02 00:21:00
    加法 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 2 3 4 5 ... 20
收藏数 23,662
精华内容 9,464
关键字:

oracle时间减一个月