加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

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

发布时间:2021-01-12 02:11:39 所属栏目:站长百科 来源:网络整理
导读:一: numtodsinterval(x,c) ?,x是一个数字,c是一个字符串, 表明x的单位,这个函数把x转为interval day to second数据类型 常用的单位有 (‘day‘,‘hour‘,‘minute‘,‘second‘) example SQL select sysdate,sysdate+numtodsinterval(3,‘hour‘) as res fr
副标题[/!--empirenews.page--]

一:

numtodsinterval(<x>,<c>)?,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; ? *********************************************************************************** 自己在mybatis的用法
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.cnpc.oms2.qual.apply.mapper.QualApplyExternalUserMapper">
  <select id="showExternalUser" parameterType="hashmap" resultType="hashmap">
    SELECT exUser.PK_USEREXTEND_CHANGE_ID,exUser.EMPLOYEE_ID,exUser.ENT_NAME,exUser.NAME,exUser.SERVER_OILFIELD,exUser.REQBOOK_NUM,exUser.IS_VALID,exUser.BSFLAG,exUser.CREATE_USER,exUser.UPDATE_USER,exUser.CREATE_DATE,exUser.UPDATE_DATE,exUser.ORG_CODE,sysUser.USER_NAME as USER_NAME,sysUser.START_DATE+numtodsinterval(sysUser.VALID_DATES,‘day‘) as END_DATE
    FROM QUAL_BASE_USEREXTEND_CHANGE exUser
    LEFT JOIN OMS_SYS_USER sysUser
    ON exUser.EMPLOYEE_ID = sysUser.EMPLOYEE_ID  
    <where>
        <if test="entName !=null and  entName != ‘‘ ">  
            exUser.ENT_NAME like CONCAT(CONCAT(‘%‘,#{entName}),‘%‘)
        </if>
        <if test="userName !=null and  userName != ‘‘ ">  
            AND sysUser.USER_NAME like CONCAT(CONCAT(‘%‘,#{userName}),‘%‘)
        </if>
        <if test="loginName !=null and  loginName != ‘‘ ">  
            AND exUser.NAME like CONCAT(CONCAT(‘%‘,#{loginName}),‘%‘)
        </if>
        
        <if test="reportUnit !=null and  reportUnit != ‘‘ ">  
            AND exUser.SERVER_OILFIELD like CONCAT(CONCAT(‘%‘,#{reportUnit}),‘%‘)
        </if>
        <if test="reportNum !=null and  reportNum != ‘‘ ">  
            AND exUser.REQBOOK_NUM like CONCAT(CONCAT(‘%‘,#{reportNum}),‘%‘)
        </if>
        
        <if test="startDate !=null and startDate !=‘‘">  
            AND TO_CHAR(sysUser.START_DATE,‘YYYY-mm-dd‘) &gt;= #{startDate}
        </if>
        <if test="endDate !=null and endDate !=‘‘">  
            AND TO_CHAR(sysUser.START_DATE+numtodsinterval(sysUser.VALID_DATES,‘day‘),‘YYYY-mm-dd‘) &lt;= #{endDate}
        </if>
        AND    
        exUser.ORG_CODE like CONCAT(CONCAT(‘%‘,#{orgCode}),‘%‘)
        <if test="entId !=null and entId != ‘‘ ">  
            OR a.ENT_ID like CONCAT(CONCAT(‘%‘,#{entId}),‘%‘)
        </if>
        AND exUser.BSFLAG = ‘0‘ 
    </where>
    ORDER BY 
        <if test="isSort == ‘yes‘">
              <trim suffixOverrides=",">
                  
              </trim>
          </if> 
          <if  test="isSort == ‘no‘">
              END_DATE DESC,exUser.SERVER_OILFIELD
          </if>  
  </select>
  
</mapper>
*********************************************************************************** ? 加法?
select sysdate,add_months(sysdate,12) from dual;???????? --加1年
select 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,-12) from dual;???????? --减1年
select 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 ;

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读