oracle中的日期的各部分的常用的的写法

oracle中的日期的各部分的常用的的写法
oracle中的日期的各部分的常用的的写法

日期的各部分的常用的的写法取时间点的年份的写法:

SELECT TO_CHAR(SYSDATE,'YYYY') FROM DUAL;

取时间点的月份的写法:

SELECT TO_CHAR(SYSDATE,'MM') FROM DUAL;

取时间点的日的写法:

SELECT TO_CHAR(SYSDATE,'DD') FROM DUAL;

取时间点的时的写法:

SELECT TO_CHAR(SYSDATE,'HH24') FROM DUAL;

取时间点的分的写法:

SELECT TO_CHAR(SYSDATE,'MI') FROM DUAL;

取时间点的秒的写法:

SELECT TO_CHAR(SYSDATE,'SS') FROM DUAL;

取时间点的日期的写法:

SELECT TRUNC(SYSDATE) FROM DUAL;

取时间点的时间的写法:

SELECT TO_CHAR(SYSDATE,'HH24:MI:SS') FROM DUAL;

日期,时间形态变为字符形态:

SELECT TO_CHAR(SYSDATE) FROM DUAL;

将字符串转换成日期或时间形态:

SELECT TO_DATE('2003/08/01') FROM DUAL;

返回参数的星期几的写法:

SELECT TO_CHAR(SYSDATE,'D') FROM DUAL;

返回参数一年中的第几天的写法:

SELECT TO_CHAR(SYSDATE,'DDD') FROM DUAL;返回午夜和参数中指定的时间值之间的秒数的写法:SELECT TO_CHAR(SYSDATE,'SSSSS') FROM DUAL;返回参数中一年的第几周的写法:

SELECT TO_CHAR(SYSDATE,'WW') FROM DUAL

Oracle时间操作大全

sysdate+(5/24/60/60) 在系统时间基础上延迟5秒 sysdate+5/24/60 在系统时间基础上延迟5分钟 sysdate+5/24 在系统时间基础上延迟5小时 sysdate+5 在系统时间基础上延迟5天 add_months(sysdate,-5) 在系统时间基础上延迟5月 add_months(sysdate,-5*12) 在系统时间基础上延迟5年 上月末的日期:select last_day(add_months(sysdate, -1)) from dual; 本月的最后一秒:select trunc(add_months(sysdate,1),'MM') - 1/24/60/60 from dual 本周星期一的日期:select trunc(sysdate,'day')+1 from dual 年初至今的天数:select ceil(sysdate - trunc(sysdate, 'year')) from dual; 今天是今年的第几周 :select to_char(sysdate,'fmww') from dual 今天是本月的第几周:SELECT TO_CHAR(SYSDATE,'WW') - TO_CHAR(TRUNC(SYSDATE,'MM'),'WW') + 1 AS "weekOfMon" FROM dual 本月的天数 SELECT to_char(last_day(SYSDATE),'dd') days FROM dual 今年的天数 select add_months(trunc(sysdate,'year'), 12) - trunc(sysdate,'year') from dual 下个星期一的日期 SELECT Next_day(SYSDATE,'monday') FROM dual ============================================ --计算工作日方法 create table t(s date,e date); alter session set nls_date_format = 'yyyy-mm-dd'; insert into t values('2003-03-01','2003-03-03'); insert into t values('2003-03-02','2003-03-03'); insert into t values('2003-03-07','2003-03-08'); insert into t values('2003-03-07','2003-03-09'); insert into t values('2003-03-05','2003-03-07'); insert into t values('2003-02-01','2003-03-31'); -- 这里假定日期都是不带时间的,否则在所有日期前加trunc即可。 select s,e,e-s+1 total_days, trunc((e-s+1)/7)*5 + length(replace(substr('01111100111110',to_char(s,'d'),mod(e-s+1,7)),'

Oracle 获取系统日期,日期转换函数

Oracle 获取系统日期,日期转换函数 learning oracle 获取系统日期和日期转换函数应用获取系统日期:SYSDA TE() 格式化日期:TO_CHAR(SYSDATE(),'YY/MM/DD HH24:MI:SS) 或TO_DATE(SYSDA TE(),'YY/MM/DD HH24:MI:SS) 格式化数字:TO_NUMBER 注:TO_CHAR 把日期或数字转换为字符串 TO_CHAR(number, '格式') TO_CHAR(salary, '$99,999.99') TO_CHAR(date, '格式') TO_DATE 把字符串转换为数据库中的日期类型 TO_DATE(char, '格式') TO_NUMBER 将字符串转换为数字 TO_NUMBER(char, '格式') 返回系统日期,输出25-12月-09 select sysdate from dual; mi是分钟,输出2009-12-25 14:23:31 select to_char(sysdate,'yyyy-MM-dd HH24:mi:ss') from dual; mm会显示月份,输出2009-12-25 14:12:31 select to_char(sysdate,'yyyy-MM-dd HH24:mm:ss') from dual; 输出09-12-25 14:23:31 select to_char(sysdate,'yy-mm-dd hh24:mi:ss') from dual 输出2009-12-25 14:23:31 select to_date('2009-12-25 14:23:31','yyyy-mm-dd,hh24:mi:ss') from dual 而如果把上式写作: select to_date('2009-12-25 14:23:31','yyyy-mm-dd,hh:mi:ss') from dual 则会报错,因为小时hh是12进制,14为非法输入,不能匹配。 输出$10,000,00 : select to_char(1000000,'$99,999,99') from dual; 输出RMB10,000,00 : select to_char(1000000,'L99,999,99') from dual; 输出1000000.12 : select trunc(to_number('1000000.123'),2) from dual; select to_number('1000000.123') from dual; 转换的格式: 表示year 的:y 表示年的最后一位、 yy 表示年的最后2位、 yyy 表示年的最后3位、 yyyy 用4位数表示年 表示month的:mm 用2位数字表示月、 mon 用简写形式,比如11月或者nov 、 month 用全称,比如11月或者november 表示day的:dd 表示当月第几天、 ddd 表示当年第几天、

ORACLE存储过程

ORACLE提供了四种类型的可存储的程序: 函数, 过程. 包,触发器 一.声明部分(Declarationsection) (1)声明部分包含了变量和常量的数据类型和初始值 (2)这个部分是由关键字DECLARE开始 (3)如果不需要声明变量或常量,那么可以忽略这一部分; 二.执行部分(Executablesection) (1)执行部分是PL/SQL块中的指令部分, (2)由关键字BEGIN开始,所有的可执行语句都放在这一部分,其他的PL/SQL块也可以放在这一部分。 三.异常处理部分(Exceptionsection) 这一部分是可选的,在这一部分中处理异常或错误。 过程存储过程是一个PL/SQL程序块,接受零个或多个参数作为输入(INPUT)或输出(OUTPUT)、或既作输入又作输出(INOUT),与函数不同,存储过程没有返回值,存储过程不能由SQL语句直接使用,只能通过EXECUT命令或PL/SQL程序块内部调用。 1.创建存储过程 CREATE[ORREPLACE]PROCEDURE过程名 (参数1{IN/OUT/INOUT}类型, 参数2{IN/OUT/INOUT}类型, …….

参数N{IN/OUT/INOUT}类型, )IS/AS 过程体 BEGIN END存储过程名字 说明: (1)ORREPLACE关键字可选,但一般会使用,功能为如果同名的过程已存在,则删除同名过程,然后重建,以此来实现修改过程的目的。 (2)过程可以包括多个参数,参数模式有IN/OUT/INOUT三种,默认为IN,也可以没参数。 (3)IS/AS键字也等价 (4)过程体为该过程的代码部分,是一个含有声明部分,执行部分和异常处理部分的PL/SQL块。但需要注意的是,在过程的声明体中不能使用DECLARE关键字,由IS或AS来代替。 注意事项: 1,存储过程参数不带取值范围,in表示传入,out表示输出 类型可以使用任意Oracle中的合法类型。 2,变量带取值范围,后面接分号 3,在判断语句前最好先用count(*)函数判断是否存在该条操作记录 4,用select。。。into。。。给变量赋值 5,在代码中抛异常用raise+异常名 2.查看过程

数据库日期格式处理(Oracle)

TO_DATE格式(以时间:2007-11-02 13:45:25为例) Year: yy two digits 两位年显示值:07 yyy three digits 三位年显示值:007 yyyy four digits 四位年显示值:2007 Month: mm number 两位月显示值:11 mon abbreviated 字符集表示显示值:11月,若是英文版,显示nov month spelled out 字符集表示显示值:11月,若是英文版,显示november Day: dd number 当月第几天显示值:02 ddd number 当年第几天显示值:02 dy abbreviated 当周第几天简写显示值:星期五,若是英文版,显示fri day spelled out 当周第几天全写显示值:星期五,若是英文版,显示friday ddspth spelled out, ordinal twelfth Hour: hh two digits 12小时进制显示值:01 hh24 two digits 24小时进制显示值:13 Minute: mi two digits 60进制显示值:45 Second: ss two digits 60进制显示值:25 其它 Q digit 季度显示值:4 WW digit 当年第几周显示值:44 W digit 当月第几周显示值:1 24小时格式下时间范围为: 0:00:00 - 23:59:59.... 12小时格式下时间范围为: 1:00:00 - 12:59:59 .... 1. 日期和字符转换函数用法(to_date,to_char) select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') as nowTime from dual; //日期转化为字符串 select to_char(sysdate,'yyyy') as nowYear from dual; //获取时间的年 select to_char(sysdate,'mm') as nowMonth from dual; //获取时间的月 select to_char(sysdate,'dd') as nowDay from dual; //获取时间的日

oracle处理日期时间

Oracle时间日期操作 sysdate+(5/24/60/60) 在系统时间基础上延迟5秒 sysdate+5/24/60 在系统时间基础上延迟5分钟 sysdate+5/24 在系统时间基础上延迟5小时 sysdate+5 在系统时间基础上延迟5天 add_months(sysdate,-5) 在系统时间基础上延迟5月 add_months(sysdate,-5*12) 在系统时间基础上延迟5年 上月末的日期:select last_day(add_months(sysdate, -1)) from dual; 本月的最后一秒:select trunc(add_months(sysdate,1),'MM') - 1/24/60/60 from dual 本周星期一的日期:select trunc(sysdate,'day')+1 from dual 年初至今的天数:select ceil(sysdate - trunc(sysdate, 'year')) from dual; 今天是今年的第几周:select to_char(sysdate,'fmww') from dual 今天是本月的第几周:SELECT TO_CHAR(SYSDATE,'WW') - TO_CHAR(TRUNC(SYSDATE,'MM'),'WW') + 1 AS "weekOfMon" FROM dual 本月的天数 SELECT to_char(last_day(SYSDATE),'dd') days FROM dual 今年的天数 select add_months(trunc(sysdate,'year'), 12) - trunc(sysdate,'year') from dual 下个星期一的日期 SELECT Next_day(SYSDATE,'monday') FROM dual ============================================ --计算工作日方法 create table t(s date,e date); alter session set nls_date_format = 'yyyy-mm-dd'; insert into t values('2003-03-01','2003-03-03'); insert into t values('2003-03-02','2003-03-03'); insert into t values('2003-03-07','2003-03-08'); insert into t values('2003-03-07','2003-03-09'); insert into t values('2003-03-05','2003-03-07'); insert into t values('2003-02-01','2003-03-31'); -- 这里假定日期都是不带时间的,否则在所有日期前加trunc即可。 select s,e,e-s+1 total_days,

ORACLE时间函数

ORACLE时间函数: sysdate+(5/24/60/60) 在系统时间基础上延迟5秒 sysdate+5/24/60 在系统时间基础上延迟5分钟 sysdate+5/24 在系统时间基础上延迟5小时 sysdate+5 在系统时间基础上延迟5天 add_months(sysdate,-5) 在系统时间基础上延迟5月 add_months(sysdate,-5*12) 在系统时间基础上延迟5年 上月末的日期:select last_day(add_months(sysdate, -1)) from dual; 本月的最后一秒:select trunc(add_months(sysdate,1),'MM') - 1/24/60/60 from dual 本周星期一的日期:select trunc(sysdate,'day')+1 from dual 年初至今的天数:select ceil(sysdate - trunc(sysdate, 'year')) from dual; 今天是今年的第几周 :select to_char(sysdate,'fmww') from dual 今天是本月的第几周:SELECT TO_CHAR(SYSDATE,'WW') - TO_CHAR(TRUNC(SYSDATE,'MM'),'WW') + 1 AS "weekOfMon" FROM dual 本月的天数 SELECT to_char(last_day(SYSDATE),'dd') days FROM dual 今年的天数 select add_months(trunc(sysdate,'year'), 12) - trunc(sysdate,'year') from dual 下个星期一的日期 SELECT Next_day(SYSDATE,'monday') FROM dual ======================================= ===== --计算工作日方法 create table t(s date,e date); alter session set nls_date_format = 'yyyy-mm-dd'; insert into t values('2003-03-01','2003-03-03'); insert into t values('2003-03-02','2003-03-03'); insert into t values('2003-03-07','2003-03-08'); insert into t values('2003-03-07','2003-03-09'); insert into t values('2003-03-05','2003-03-07'); insert into t values('2003-02-01','2003-03-31'); -- 这里假定日期都是不带时间的,否则在所有日期前加trunc即可。 select s,e,e-s+1 total_days, trunc((e-s+1)/7)*5 + length(replace(substr('01111100111110',to_char(s,'d'),mod(e-s+1,7

oracle存储过程讲解及实例

存储过程 1 CREATE OR REPLACE PROCEDURE 存储过程名 2 IS 3 BEGIN 4 NULL; 5 END; 行1: CREATE OR REPLACE PROCEDURE 是一个SQL语句通知Oracle数据库去创建一个叫做skeleton存储过程, 如果存在就覆盖它; 行2: IS关键词表明后面将跟随一个PL/SQL体。 行3: BEGIN关键词表明PL/SQL体的开始。 行4: NULL PL/SQL语句表明什么事都不做,这句不能删去,因为PL/SQL体中至少需要有一句; 行5: END关键词表明PL/SQL体的结束

存储过程创建语法: create or replace procedure 存储过程名(param1 in type,param2 out type) as 变量1 类型(值范围); --vs_msg VARCHAR2(4000); 变量2 类型(值范围); Begin Select count(*) into 变量1 from 表A where列名 =param1; If (判断条件) then Select 列名into 变量2 from 表A where列名 =param1; Dbms_output。Put_line(‘打印信息’); Elsif (判断条件) then Dbms_output。Put_line(‘打印信息’); Else Raise 异常名(NO_DATA_FOUND); End if; Exception When others then Rollback;

End; 注意事项: 1,存储过程参数不带取值范围,in表示传入,out表示输出 类型可以使用任意Oracle中的合法类型。 2,变量带取值范围,后面接分号 3,在判断语句前最好先用count(*)函数判断是否存在该条操作记录 4,用select 。。。into。。。给变量赋值 5,在代码中抛异常用 raise+异常名 CREATE OR REPLACE PROCEDURE存储过程名 ( --定义参数 is_ym IN CHAR(6) ,

关于Oracle日期格式

Oracle关于日期时间 一.问题描述 我安装的数据库日期Date格式默认为’DD-M-YYYY(2-2月-1988)’,而数据库默认的格式一般都是’DD-MON-YYYY’,现在需要把日期格式改成数据库原本默认的格式 二.处理方式 修改注册表: 1.在注册表的KEY_LOCAL_MACHINE->SOFTWARE->ORACLE->HOME0 2.找到:NLS_LANG 如果这个不是’American’,要设置成英文(我原来安装的时候选的是简体中文,NLS_LANG的值是:SIMPLIFIED CHINESE_CHINA.ZHS16GBK) 3.新建一个字符串,命名为NLS_DA TE_FORMA T,然后值填上想要的默认格式,例如:YYYY-MM-DD HH24:MI:SS

4.第三方的工具显示的日期格式有时候和数据库默认的不通,工具里面的格式是受工具影响的,如果想要改变PLSQL Developer里面的日期显示格式,可以这样改: PL/SQL DEVELOPER需要在Tools->Preferences->User Interface->Date/Time下修改格式即 可: 如修改参数文件的话。可直接在参数文件中添加:

NLS_DATA_FORMAT=YYYY-MM-DD-HH24:MI:SS,但须将注册表中上述位置的NLS_LANG字串值去掉。 三.常用的命名 1.可以用下面的命令来修改一个会话的日期格式,断开与数据库的连接时,会话结束, 所有的修改都会丢失 alter session set nls_date_format='yyyy-mm-dd' 2. 查看日期格式命名:show parameter nls_date_format 3. 查看参数设置:select * from nls_session_parameters 4.求某天是星期几select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day') from dual; 5.求当前是星期几:select to_char(sysdate, 'day') from dual 6. 一年的第几天:select TO_CHAR(SYSDA TE,'DDD'),sysdate from dual 参考网址:https://www.360docs.net/doc/7614048441.html,/397879213/archive/2010/12/29/341925.html https://www.360docs.net/doc/7614048441.html,/gudufeiyang/article/details/5938885 2011年7月9日星期六 ___LiBo整理

如何在Oracle中使用Java存储过程(详解)

如何在Oracle中使用Java存储过程 (详解) 一、如何缔造java存储过程? 通常有三种步骤来缔造java存储过程。 1. 使用oracle的sql语句来缔造: e.g. 使用create or replace and compile java source named "" as 后边跟上java源程序。要求类的步骤必须是public static的,威力用于存储过程。 1.SQL> create or replace and compile java source named "javademo1 " 2. as 3. import java.sql.*; 4. public class JavaDemo1 5. { 6. public static void main(String[] argv) 7. { 8. System.out.println("hello, java demo1"); 9. } 10. } 11. / 12. 13.Java 已 14. 15.缔造。 16. 17.SQL> show errors java source "javademo1" 18.没有 19. 20.舛误。 21. 22.SQL> create or replace procedure javademo1 23. 2 as 24.3 language java name JavaDemo1.main(https://www.360docs.net/doc/7614048441.html,ng.String[]); 25. 4 / 26. 27.过程已 28.

30. 31.SQL> set serveroutput on 32.SQL> call javademo1(); 33. 34.调用 35.实现。 36. 37.SQL> call dbms_java.set_output(5000); 38. 39.调用 40.实现。 41. 42.SQL> call javademo1(); 43.hello, java demo1 44. 45.调用 46.实现。 47. 48.SQL> call javademo1(); 49.hello, java demo1 50.调用 51.实现。 2. 使用外部class文件来装载缔造 e.g. 这里既然用到了外部文件,必定要将class文件放到oracle Server 的某一目录下边。 1.public class OracleJavaProc 2.{ 3. public static void main(String[] argv) 4. { 5. System.out.println("Its a Java Oracle procedure."); 6. } 7.} 8. 9. 10.SQL> grant create any directory to scott; 11. 12.授权 13.顺利。 14. 15.SQL> conn scott/tiger@iihero.oracledb

oracle日期处理全集__日期加减全活儿

1、add_months(d,n) 日期d加n个月 SQL> SELECT SYSDA TE AS This_Day,add_months(SYSDATE,1) AS Next_Day FROM dual; THIS_DAY NEXT_DAY -------------- ------------ 08-9月-10 08-10月-10 2、last_day(d) 包含d的月份的最后一天的日期 SQL> select last_day(sysdate) as last_day from dual; LAST_DAY ----------- 30-9月-10 3、new_time(d,a,b) 时区的日期和时间d在b时区的日期和时间 SQL> select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') as china, to_char(new_time(sysdate,'est','GMT'),'YYYY-MM-DD HH24:MI:SS') as GMT from dual; CHINA GMT ------------------- ------------------- 2010-09-08 09:51:50 2010-09-08 14:51:50 4、next_day(d,day) 比日期d晚,由day指定的周几的日期 SQL> select sysdate as this_day, next_day(sysdate,7) as next_sat from dual; THIS_DAY NEXT_SAT -------------- -------------- 08-9月-10 11-9月-10 N天前的日期: SQL> select to_date(to_char(sysdate-5, 'yyyy-MM-dd'), 'yyyy-MM-dd') from dual; 5、sysdate 当前的系统日期和时间 6、greatest(d1,d2,...dn) 给出的日期列表中最后的日期 SQL> select sysdate as this_day,greatest(sysdate,sysdate+1,sysdate+2) as max_day from dual; THIS_DAY MAX_DAY -------------- -------------- 08-9月-10 10-9月-10 7、least(d1,k2,...dn) 给出的日期列表中最早的日期 SQL> select sysdate as this_day,least(sysdate,sysdate+1,sysdate-1) as min_day from dual; THIS_DAY MIN_DAY -------------- -------------- 08-9月-10 07-9月-10 8、to_char(d [,fmt]) 日期d按fmt指定的格式转变成字符串 SQL> select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') as today from dual; TODAY -------------------

Oracle时间格式

1:取得当前日期是本月的第几周 SQL> select to_char(sysdate,'YYYYMMDD W HH24:MI:SS') from dual; TO_CHAR(SYSDATE,'YY ------------------- 20030327 4 18:16:09 SQL> select to_char(sysdate,'W') from dual; T - 4 2:取得当前日期是一个星期中的第几天,注意星期日是第一天SQL> select sysdate,to_char(sysdate,'D') from dual; SYSDATE T --------- - 27-MAR-03 5 类似: select to_char(sysdate,'yyyy') from dual; --年 select to_char(sysdate,'Q' from dual; --季 select to_char(sysdate,'mm') from dual; --月 select to_char(sysdate,'dd') from dual; --日 ddd 年中的第几天 WW 年中的第几个星期 W 该月中第几个星期 D 周中的星期几 hh 小时(12) hh24 小时(24) Mi 分 ss 秒 3:取当前日期是星期几中文显示: SQL> select to_char(sysdate,'day') from dual; TO_CHAR(SYSDATE,'DAY') ---------------------- 星期四 4:如果一个表在一个date类型的字段上面建立了索引,如何使用alter session set NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'

Oracle中日期,时间查询

Oracle中日期,时间查询 在注册表\hkey_local_machine\software\oracle\home0主键中增加一个字串(8i版本),字串名为nls_date_format,字串的值为你希望定义的时间格式,如:yyyy-mm-dd hh24:mi:ss to_date('2007-08-25 19:31:00','yyyy-mm-dd hh24:mi;ss') 在oracle中处理日期大全 TO_DATE格式 Day: dd number 12 dy abbreviated fri day spelled out friday ddspth spelled out, ordinal twelfth Month: mm number 03 mon abbreviated mar month spelled out march Year: yy two digits 98 yyyy four digits 1998 24小时格式下时间范围为: 0:00:00 - 23:59:59.... 12小时格式下时间范围为: 1:00:00 - 12:59:59 .... 1. 日期和字符转换函数用法(to_date,to_char) 2. select to_char( to_date(222,'J'),'Jsp') from dual 显示Two Hundred Twenty-Two 3. 求某天是星期几 select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day') from dual; 星期一 select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE = American') from dual; monday 设置日期语言

Oracle存储过程基本结构

1.基本结构 CREATE OR REPLACE PROCEDURE 存储过程名字 ( 参数1 IN NUMBER, 参数2 IN NUMBER ) IS 变量1 INTEGER :=0; 变量2 DATE; BEGIN END 存储过程名字 2.SELECT INTO STATEMENT 将select查询的结果存入到变量中,可以同时将多个列存储多个变量中,必须有一条 记录,否则抛出异常(如果没有记录抛出NO_DATA_FOUND) 例子: BEGIN

SELECT col1,col2 into 变量1,变量2 FROM typestruct wher e xxx; EXCEPTION WHEN NO_DATA_FOUND THEN xxxx; END; ... 3.IF 判断 IF V_TEST=1 THEN BEGIN do something END; END IF; 4.while 循环 WHILE V_TEST=1 LOOP BEGIN

XXXX END; END LOOP; 5.变量赋值 V_TEST := 123; 6.用for in 使用cursor ... IS CURSOR cur IS SELECT * FROM xxx; BEGIN FOR cur_result in cur LOOP BEGIN V_SUM :=cur_result.列名1+cur_result.列名2 END; END LOOP;

END; 7.带参数的cursor CURSOR C_USER(C_ID NUMBER) IS SELECT NAME FROM USER WHE RE TYPEID=C_ID; OPEN C_USER(变量值); LOOP FETCH C_USER INTO V_NAME; EXIT FETCH C_USER%NOTFOUND; do something END LOOP; CLOSE C_USER; 8.用pl/sql developer debug 连接数据库后建立一个Test WINDOW 在窗口输入调用SP的代码,F9开始debug,CTRL+N单步调试 关于oracle存储过程的若干问题备忘 1.在oracle中,数据表别名不能加as,如:

Oracle中trunc()函数用法处理日期、数字类型数据

trunc()函数用法处理日期、数字类型数据 一、日期 TRUNC函数为指定元素而截去的日期值。 其具体的语法格式如下: TRUNC(date[,fmt]) 其中:date 一个日期值 fmt 日期格式,该日期将由指定的元素格式所截去。忽略它则由最近的日期截去如果当日日期是:2011-3-18 1.select trunc(sysdate) from dual --2011-3-18 今天的日期为2011-3-18 2.select trunc(sysdate, 'mm') from dual --2011-3-1 返回当月第一天. 3.select trunc(sysdate,'yy') from dual --2011-1-1 返回当年第一天 4.select trunc(sysdate,'dd') from dual --2011-3-18 返回当前年月日 5.select trunc(sysdate,'yyyy') from dual --2011-1-1 返回当年第一天 6.select trunc(sysdate,'d') from dual --2011-3-13 (星期天)返回当前星期的第一天 7.select trunc(sysdate, 'hh') from dual --2011-3-18 14:00:00 当前时间为14:41 8.select trunc(sysdate, 'mi') from dual --2011-3-18 14:41:00 TRUNC()函数没有秒的精确 二、数字 TRUNC(number,num_digits) Number 需要截尾取整的数字。 Num_digits 用于指定取整精度的数字。Num_digits 的默认值为0。 TRUNC()函数截取时不进行四舍五入 9.select trunc(123.458) from dual --123 10.select trunc(123.458,0) from dual --123 11.select trunc(123.458,1) from dual --123.4 12.select trunc(123.458,-1) from dual --120 13.select trunc(123.458,-4) from dual --0 14.select trunc(123.458,4) from dual --123.458 15.select trunc(123) from dual --123 16.select trunc(123,1) from dual --123 17.select trunc(123,-1) from dual --120

oracle SQL里常用的时间函数

oracle SQL里常用的时间函数,经典推荐 相信很多人都有过统计某些数据的经历,比如,要统计财务的情况,可能要按每年,每季度,每月,甚至每个星期来分别统计。那在oracle 中应该怎么来写sql语句呢,这个时候Oracle的日期函数会给我们很多帮助。 常用日期型函数 1。Sysdate 当前日期和时间 SQL> Select sysdate from dual; SYSDATE ---------- 21-6月-05 2。Last_day 本月最后一天 SQL> Select last_day(sysdate) from dual; LAST_DAY(S ---------- 30-6月-05 3。Add_months(d,n) 当前日期d后推n个月

用于从一个日期值增加或减少一些月份 date_value:=add_months(date_value,number_of_months) SQL> Select add_months(sysdate,2) from dual; ADD_MONTHS ---------- 21-8月-05 4。Months_between(f,s) 日期f和s间相差月数 SQL> select months_between(sysdate,to_date('2005-11-12','yyyy-mm-dd'))fro m dual; MONTHS_BETWEEN(SYSDATE,TO_DATE('2005-11-12','YYYY-MM-D D')) ---------------------------------------------------------- -4.6966741 5。NEXT_DAY(d, day_of_week) 返回由"day_of_week"命名的,在变量"d"指定的日期之后的第一个工作日的日期。参数"day_of_week"必须为该星期中的某一天。

Oracle 中的日期格式转化

Oracle 中的TO_DATE 和TO_CHAR 函数日期处理 Oracle 中的 TO_DATE 和TO_CHAR函数 oracle 中 TO_DATE 函数的时间格式,以 2008-09-10 23:45:56 为例 格式说明显示值备注 Year(年): yy two digits(两位年) 08 yyy three digits(三位年) 008 yyyy four digits(四位年) 2008 Month(月): mm number(两位月) 09 mon abbreviated(字符集表示) 9月若是英文版, 则显示 sep month spelled out(字符集表示) 9月若是英文版, 则显示 september Day(日): dd number(当月第几天) 10 ddd number(当年第几天) 254 dy abbreviated(当周第几天简写) 星期三若是英文版, 则显示 wed day spelled out(当周第几天全写) 星期三若是英文版, 则显示 wednesday ddspth spelled out, ordinal twelfth tenth Hour(时): hh two digits(12小时进制) 11 hh24 two digits(24小时进制) 23 Minute(分): mi two digits(60进制) 45 Second(秒): ss two digits(60进制) 56 其他: Q digit(季度) 3 WW digit(当年第几周) 37 W digit(当月第几周) 2 说明: 12小时格式下时间范围为: 1:00:00 - 12:59:59(12 小时制下的 12:59:59 对应 24 小时制下的 00:59:59) 24小时格式下时间范围为: 0:00:00 - 23:59:59 1. 日期和字符转换函数用法(to_date,to_char) select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') as nowTime from dual; //日期转化为字符串

oracle存储过程的详细列子说明加分析

文章分类:数据库存储过程创建语法: (1)无参 create or replace procedure 存储过程名as 变量1类型(值范围); 变量2类型(值范围); Begin Excepti on End; (2)带参 create or replace procedure 存储过程名(param1 in type,param2 out type)as 变量1类型(值范围); 变量2类型(值范围); Begin Select count(*) into 变量1 from 表A where 列名=param1 ; If (判断条件)then Select 列名into 变量2 from 表A where 列名=param1; Dbms_output.Put_line(打印信息'); Elseif (判断条件)then Dbms_output.Put_line(打印信息'); Else Raise 异常名(NO DATA FOUND); End if; Excepti on When others the n Rollback; End; 注意事项: 1,存储过程参数不带取值范围,in表示传入,out表示输出

2, 变量带取值范围,后面接分号 3, 在判断语句前最好先用count ( *)函数判断是否存在该条操作记录 4, 用select。。。into。。。给变量赋值 5,在代码中抛异常用raise+异常名 以命名的异常 命名的系统异常产生原因 ACCESS INTO NULL 未定义对象 CASE_NOT_FOUND CASE中若未包含相应的WHEN,并且没有设置 ELSE 时 COLLECTION_IS_NULL 集合元素未初始化 CURSER ALREADY OPEN 游标已经打开 DUP VAL ON INDEX 唯一索引对应的列上有重复的值 INVALID_CURSOR 在不合法的游标上进行操作 INVALID_NUMBER 内嵌的SQL语句不能将字符转换为数字 NO_DATA_FOUND 使用select into未返回行,或应用索引表未初始化的 TOO MANY ROWS 执行select into时,结果集超过一行ZERO_DIVIDE 除数为0 SUBSCRIPT_BEYOND_COUNT 元素下标超过嵌套表或VARRAY的最大值

相关文档
最新文档