oracle中常用的 SQL语句中进行时间加减
发布时间:2021-01-12 01:14:27 所属栏目:站长百科 来源:网络整理
导读:一: 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‘) >= #{startDate} </if> <if test="endDate !=null and endDate !=‘‘"> AND TO_CHAR(sysUser.START_DATE+numtodsinterval(sysUser.VALID_DATES,‘day‘),‘YYYY-mm-dd‘) <= #{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 ; (编辑:淮安站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |