oracle中sql语句 日期加减,SQL语句里对日期进行相加减
在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语句里对日期进行相加减相关推荐
- Oracle中start with xx connect by prior 语句解析
Oracle中start with xx connect by prior 语句解析 Oracle这种的start with语句主要对B型树的数据进行递归查询.可以指定数据树上的任一节点,然后查找 ...
- 在Oracle中写出性能优良的SQL语句
我们要做到不但会写SQL,还要做到写出性能优良的SQL,以下为笔者学习.摘录.并汇总部分资料与大家分享! (1) 选择最有效率的表名顺序(只在基于规则的优化器中有效): ORACLE的解析器 ...
- oracle判断字符串是不是日期,在ORACLE中如何判断一个字符串是否是一个合适的日期...
很多时候, 我们碰到的数据库都是历史数据库, 有时就会碰到各种各样的数据不规范的情况, 在这里讨论一下日期字符串的处理. 虽然各种数据库中都有各自的日期类型, 但是因为各种各样的情况我们会碰到用字符串 ...
- python中print后面要加括号吗_python里print要括号吗
print函数加与不加括号,主要是在Python2和Python3中的差异,print函数在Python2中是不需要加括号的,在Python3中,需要加括号. 主要体现在以下几个方面:1.python ...
- oracle多条sql语句常量,如何在Oracle中一次执行多条sql语句
有时我们需要一次性执行多条sql语句,而用来更新的sql是根据实际情况用代码拼出来的 解决方案是把sql拼成下面这种形式: begin update TB_VG set seq = 1, vessel ...
- ado.net Oracle中一次执行多条sql语句
begin update TB_VG set seq = 1, vessel_id = 'Jin14', vessel_type = 'TRACK' where batch_number = '20 ...
- oracle中having的用法,深入浅析SQL中的group by 和 having 用法
一.sql中的group by 用法解析: Group By语句从英文的字面意义上理解就是"根据(by)一定的规则进行分组(Group)". 作用:通过一定的规则将一个数据集划分成 ...
- Oracle中导出一条记录的SQL
一:选中一条记录 二:导出SQL 三:选出自己的SQL语句 insert into AP_MENU (MENU_ID, MENU_NAME, PARENT_ID, ACTION, B_ENABLE, ...
- Oracle中查看触发器使用到的SQL
一.ORACLE 查出表所有的触发器及触发器详细信息 1.1.查all_triggers表得到trigger_name select trigger_name from all_triggers wh ...
- Oracle中一把梭获取对象DDL创建语句
文章目录 1.DBMS_METADATA.GET_DDL包详解以及使用案例 1.1.官方文档参考 1.2.常用获取ddl信息案例 1.2.1.查看表以及对应索引创建语句 1.2.2.获取用户下所有对象 ...
最新文章
- 当你再面对大多数需求时能够说这些问题我以前做过,那你就。。。
- php mysql备份还原类_PHP实现MYSQL备份还原
- 5阶无向完全图_运动轿跑风 全新上汽名爵5预告图发布
- 【转】jvm内存结构
- system什么意思c语言,system是什么意思?
- vue2.0网易云音乐播放器 (实时更新)
- 敏捷测试的方法和实践
- 揭秘跨境电商亚马逊店铺最新骗局!!小白做亚马逊店铺如何防止上当受骗?
- 为什么你应该学习编程?
- iOS-SEL的用法和讲解
- 设备树使用手册【转】
- androidstudio身高预测app
- Windows桌面图片打开慢的原因 wyz_csdn
- shell脚本之国际象棋棋盘
- java-大数据-精品课程目录(超级全)
- 最大后验估计(MAP)------贝叶斯学派的法宝
- 聊聊我的故事|我的人生经历
- jquery中的this 到底是什么意思? $(this)
- android 常用adb 和 adb shell 命令 获取root权限
- html怎么获取form表单数据,如何优雅的获取Form表单数据?
热门文章
- [译]发布ABP v0.19包含Angular UI选项
- 为啥选择python
- Wi-Fi Direct
- 运用EL表达式进行复杂比较(在JSTL中调用函数)
- [U3D Demo] 手机FPS射击游戏
- win7查看硬盘序列号
- Java学习之Thread之【Monitor】与【wait】与【notify】与【sleep】_加【Callable】【Executor】【ExecutorService】【Future】
- Excel中的数组函数
- 【Hive】表生成(Table-Generating)函数
- 【MySQL】源码安装MySQL