在sql server里可以使用:

where start_date <=

DateAdd(d,1,to_date('2005-12-09','yyyy-mm-dd'))

and completion_date >=

to_date('2005-12-09', 'yyyy-mm-dd') ;oracle中没有定义和sql server中一样的DateAdd函数,

oracle可以通过interval 'n' year/month/day/hour/minute/second/second(p,s)

的方式来增减时间

下面是在oracle中写的DateAdd函数

函数调用基本同sql server一样, 不过datepart部分需要以字符串的方式输入, 即

DateAdd(d,1,to_date('2005-12-09','yyyy-mm-dd'))

要改为

DateAdd('d',1,to_date('2005-12-09','yyyy-mm-dd'))

函数定义如下函数中的注释是datepart的新说明, 与sql server中的略有不同)

create or replace function DATEADD( datepart varchar2, num number, indate date ) return date is

Result date;

v_sql varchar2(1000);

v_datepart varchar2(30);

v_ms varchar2(13);

begin

v_datepart := lower(datepart);

/*

Datepart Abbreviations

year yy, y

quarter qq, q

month mm, m

day dd, d

week wk, w

hour hh, h

minute mi, n

second ss, s

millisecond ms

*/

case

when v_datepart in ('year','yy','y') then

v_sql := 'select :1 + interval '''||num||''' year from dual';

when v_datepart in ('quarter','qq','q') then

v_sql := 'select :1 + (interval ''3'' month) * '||num||' from dual';

when v_datepart in ('month','mm','m') then

v_sql := 'select :1 + interval '''||num||''' month from dual';

when v_datepart in ('week','wk','w') then

v_sql := 'select :1 + (interval ''7'' day) * '||num||' from dual';

when v_datepart in ('day','dd','d') then

v_sql := 'select :1 + interval '''||num||''' day from dual';

when v_datepart in ('hour','hh') then

v_sql := 'select :1 + interval '''||num||''' hour from dual';

when v_datepart in ('minute','mi','n') then

v_sql := 'select :1 + interval '''||num||''' minute from dual';

when v_datepart in ('second','ss','s') then

v_sql := 'select :1 + interval '''||num||''' second from dual';

when v_datepart in ('millisecond','ms') then

v_ms := to_char(num/1000,'fm999999990.000');

v_sql := 'select :1 + interval '''||v_ms||''' second(9,3) from dual';

else

RAISE_APPLICATION_ERROR(-20001, ''''||datepart||''' is not a recognized dateadd option.' );

end case;

execute immediate v_sql into Result using indate;

return(Result);

EXCEPTION

WHEN OTHERS THEN

RAISE ;

end DATEADD;

分享到:更多

oracle中sql语句 日期加减,SQL语句里对日期进行相加减相关推荐

  1. Oracle中start with xx connect by prior 语句解析

    Oracle中start with xx connect by prior 语句解析 ​ Oracle这种的start with语句主要对B型树的数据进行递归查询.可以指定数据树上的任一节点,然后查找 ...

  2. 在Oracle中写出性能优良的SQL语句

    我们要做到不但会写SQL,还要做到写出性能优良的SQL,以下为笔者学习.摘录.并汇总部分资料与大家分享! (1)      选择最有效率的表名顺序(只在基于规则的优化器中有效): ORACLE的解析器 ...

  3. oracle判断字符串是不是日期,在ORACLE中如何判断一个字符串是否是一个合适的日期...

    很多时候, 我们碰到的数据库都是历史数据库, 有时就会碰到各种各样的数据不规范的情况, 在这里讨论一下日期字符串的处理. 虽然各种数据库中都有各自的日期类型, 但是因为各种各样的情况我们会碰到用字符串 ...

  4. python中print后面要加括号吗_python里print要括号吗

    print函数加与不加括号,主要是在Python2和Python3中的差异,print函数在Python2中是不需要加括号的,在Python3中,需要加括号. 主要体现在以下几个方面:1.python ...

  5. oracle多条sql语句常量,如何在Oracle中一次执行多条sql语句

    有时我们需要一次性执行多条sql语句,而用来更新的sql是根据实际情况用代码拼出来的 解决方案是把sql拼成下面这种形式: begin update TB_VG set seq = 1, vessel ...

  6. ado.net Oracle中一次执行多条sql语句

    begin  update TB_VG set seq = 1, vessel_id = 'Jin14', vessel_type = 'TRACK' where batch_number = '20 ...

  7. oracle中having的用法,深入浅析SQL中的group by 和 having 用法

    一.sql中的group by 用法解析: Group By语句从英文的字面意义上理解就是"根据(by)一定的规则进行分组(Group)". 作用:通过一定的规则将一个数据集划分成 ...

  8. Oracle中导出一条记录的SQL

    一:选中一条记录 二:导出SQL 三:选出自己的SQL语句 insert into AP_MENU (MENU_ID, MENU_NAME, PARENT_ID, ACTION, B_ENABLE, ...

  9. Oracle中查看触发器使用到的SQL

    一.ORACLE 查出表所有的触发器及触发器详细信息 1.1.查all_triggers表得到trigger_name select trigger_name from all_triggers wh ...

  10. Oracle中一把梭获取对象DDL创建语句

    文章目录 1.DBMS_METADATA.GET_DDL包详解以及使用案例 1.1.官方文档参考 1.2.常用获取ddl信息案例 1.2.1.查看表以及对应索引创建语句 1.2.2.获取用户下所有对象 ...

最新文章

  1. 当你再面对大多数需求时能够说这些问题我以前做过,那你就。。。
  2. php mysql备份还原类_PHP实现MYSQL备份还原
  3. 5阶无向完全图_运动轿跑风 全新上汽名爵5预告图发布
  4. 【转】jvm内存结构
  5. system什么意思c语言,system是什么意思?
  6. vue2.0网易云音乐播放器 (实时更新)
  7. 敏捷测试的方法和实践
  8. 揭秘跨境电商亚马逊店铺最新骗局!!小白做亚马逊店铺如何防止上当受骗?
  9. 为什么你应该学习编程?
  10. iOS-SEL的用法和讲解
  11. 设备树使用手册【转】
  12. androidstudio身高预测app
  13. Windows桌面图片打开慢的原因 wyz_csdn
  14. shell脚本之国际象棋棋盘
  15. java-大数据-精品课程目录(超级全)
  16. 最大后验估计(MAP)------贝叶斯学派的法宝
  17. 聊聊我的故事|我的人生经历
  18. jquery中的this 到底是什么意思? $(this)
  19. android 常用adb 和 adb shell 命令 获取root权限
  20. html怎么获取form表单数据,如何优雅的获取Form表单数据?

热门文章

  1. [译]发布ABP v0.19包含Angular UI选项
  2. 为啥选择python
  3. Wi-Fi Direct
  4. 运用EL表达式进行复杂比较(在JSTL中调用函数)
  5. [U3D Demo] 手机FPS射击游戏
  6. win7查看硬盘序列号
  7. Java学习之Thread之【Monitor】与【wait】与【notify】与【sleep】_加【Callable】【Executor】【ExecutorService】【Future】
  8. Excel中的数组函数
  9. 【Hive】表生成(Table-Generating)函数
  10. 【MySQL】源码安装MySQL