- 浏览: 255497 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (217)
- java 基础 (36)
- flex (1)
- structs 2.0 (5)
- oracle 学习过程 (20)
- j2ee (63)
- c/s java (0)
- javaScript (24)
- jdom (1)
- jquery (1)
- java模式 (1)
- Datebase common konwledge (3)
- JfreeChart (3)
- html (3)
- sql server (6)
- tomcat servlet (4)
- lucene (1)
- Linux (3)
- 常见注意 (6)
- hibernate (2)
- jsp页面 (3)
- effective Java (1)
- spring (2)
- Spark (1)
- json (0)
- JMS (1)
- 电脑故障 (2)
- mysql (1)
- JBPM (2)
- java 线程 (1)
- oracle优化 (1)
- 安全 (1)
- hadoop (0)
- 算法 (1)
- hbase (0)
最新评论
-
mfhappy:
你好,你这个导出的文件中如果有图片你怎么处理??
jsp 导出excel(利用excel本身另存为html) -
丹寺丁:
...
jquery 解析 java 后台的 json数据 -
xurichusheng:
不直接诶生成想要的对象,而是让客户端利用所有必要的参数 ...
重叠构造器、Builder模式 -
wen121221222:
感谢啊!困恼我一个下午的问题终于解决了
java.lang.NoClassDefFoundError: javax/mail/Authenticator异常 -
gaoyanglovejava:
不错。就是这么解决的。多谢
The project is not a myEclipse hibernate project
摘自他出,只为学习。
Oracle关于时间/日期的操作
1.日期时间间隔操作
当前时间减去7分钟的时间
select sysdate,sysdate - interval '7' MINUTE from dual
当前时间减去7小时的时间
select sysdate - interval '7' hour from dual
当前时间减去7天的时间
select sysdate - interval '7' day from dual
当前时间减去7月的时间
select sysdate,sysdate - interval '7' month from dual
当前时间减去7年的时间
select sysdate,sysdate - interval '7' year from dual
时间间隔乘以一个数字
select sysdate,sysdate - 8 *interval '2' hour from dual
2.日期到字符操作
- select sysdate,to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual
- select sysdate,to_char(sysdate,'yyyy-mm-dd hh:mi:ss') from dual
- select sysdate,to_char(sysdate,'yyyy-ddd hh:mi:ss') from dual
- select sysdate,to_char(sysdate,'yyyy-mm iw-d hh:mi:ss') from dual
select sysdate,to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual select sysdate,to_char(sysdate,'yyyy-mm-dd hh:mi:ss') from dual select sysdate,to_char(sysdate,'yyyy-ddd hh:mi:ss') from dual select sysdate,to_char(sysdate,'yyyy-mm iw-d hh:mi:ss') from dual
参考oracle的相关关文档(ORACLE901DOC/SERVER.901/A90125/SQL_ELEMENTS4.HTM#48515)
3. 字符到日期操作
select to_date('2003-10-17 21:15:37','yyyy-mm-dd hh24:mi:ss') from dual
具体用法和上面的to_char差不多。
4. trunk/ ROUND函数的使用
- select trunc(sysdate ,'YEAR') from dual
- select trunc(sysdate ) from dual
- select to_char(trunc(sysdate ,'YYYY'),'YYYY') from dual
select trunc(sysdate ,'YEAR') from dual select trunc(sysdate ) from dual select to_char(trunc(sysdate ,'YYYY'),'YYYY') from dual
5.oracle有毫秒级的数据类型
--返回当前时间 年月日小时分秒毫秒
select to_char(current_timestamp(5),'DD-MON-YYYY HH24:MI:SSxFF') from dual;
--返回当前 时间的秒毫秒,可以指定秒后面的精度(最大=9)
select to_char(current_timestamp(9),'MI:SSxFF') from dual;
6.计算程序运行的时间(ms)
- declare
- type rc is ref cursor;
- l_rc rc;
- l_dummy all_objects.object_name%type;
- l_start number default dbms_utility.get_time;
- begin
- for I in 1 .. 1000
- loop
- open l_rc for
- 'select object_name from all_objects '||
- 'where object_id = ' || i;
- fetch l_rc into l_dummy;
- close l_rc;
- end loop;
- dbms_output.put_line
- ( round( (dbms_utility.get_time-l_start)/100, 2 ) ||
- ' seconds...' );
- end;
declare type rc is ref cursor; l_rc rc; l_dummy all_objects.object_name%type; l_start number default dbms_utility.get_time; begin for I in 1 .. 1000 loop open l_rc for 'select object_name from all_objects '|| 'where object_id = ' || i; fetch l_rc into l_dummy; close l_rc; end loop; dbms_output.put_line ( round( (dbms_utility.get_time-l_start)/100, 2 ) || ' seconds...' ); end;
7、add_months()用于从一个日期值增加或减少一些月份
1〉获得若干分钟前的时间
select sysdate,sysdate - N/(60*24) from dual;
或者
select sysdate,sysdate - interval 'N' minute from dual
2〉获得若干分钟后的时间 s
elect sysdate,sysdate + N/(60*24) from dual;
或者
select sysdate,sysdate + interval 'N' minute from dual
注释:"N"表示需要减去或者加上的分钟数
3〉获得若干秒前的时间 s
elect sysdate,sysdate - N*0.00001 from dual;
或者
select sysdate,sysdate - N/(60*60*24) from dual;
或者
select sysdate,sysdate - interval 'N' second from dual
4〉获得若干秒后的时间
select sysdate,sysdate + N*0.00001 from dual;
或者
select sysdate,sysdate - N/(60*60*24) from dual;
或者
select sysdate,sysdate + interval 'N' second from dual
注释:"N"表示需要减去或者加上的秒数
注释:N*0.00001 等价于 N/(60*60*24)
5〉获得若干小时前的时间
select sysdate,sysdate - N*/24 from dual;
或者
select sysdate,sysdate - interval 'N' hour from dual
6〉获得若干小时后的时间
select sysdate,sysdate + N*/24 from dual;
或者
select sysdate,sysdate + interval 'N' hour from dual
注释:"N"表示需要减去或者加上的小时数
7〉获得若干月之后同一时间
select sysdate,add_months(sysdate,N) from dual;
或者
select sysdate,sysdate + interval 'N' month from dual
8〉获得若干月之前的同一时间
select sysdate,add_months(sysdate,-N) from dual;
或者
select sysdate,sysdate - interval 'N' month from dual
注释:"N"表示需要减去或者加上的月数
9〉获得某个日期所在月份的第一天
select sysdate,trunc(sysdate,'mm') from dual;
10〉获得某个日期所在年的第一天
select sysdate,trunc(sysdate,'yyyy') from dual;
或者
- select sysdate,to_date(to_char((to_number(to_char(sysdate,'yyyy')) * 100 + 1) * 100 + 1),'yyyymmdd') from dual
select sysdate,to_date(to_char((to_number(to_char(sysdate,'yyyy')) * 100 + 1) * 100 + 1),'yyyymmdd') from dual
11〉获得某个日期所在年的最后一天
select sysdate,to_date((to_char(sysdate,'yyyy') || '1231'),'yyyymmdd') from dual;
或者
- select sysdate,to_date(to_char((to_number(to_char(sysdate,'yyyy'))* 100 + 12) * 100 + 31),'yyyymmdd') from dual
select sysdate,to_date(to_char((to_number(to_char(sysdate,'yyyy'))* 100 + 12) * 100 + 31),'yyyymmdd') from dual
12〉获得某个日期所在月份的最后一天
select sysdate,last_day(sysdate) from dual;
13〉获得两个日期之间的时数
select t.intime,t.outtime,trunc(24*(t.outtime-t.intime)) from hr_carding t
14〉获得两个日期之间的天数
select t.begintime,t.endtime,trunc(t.endtime-t.begintime) from hr_absence t
15〉获得若干天前的时间 s
elect sysdate,sysdate - N from dual;
或者
select sysdate,sysdate - interval 'N' day from dual
16〉获得若干天后的时间
select sysdate,sysdate + N from dual;
或者
select sysdate,sysdate + interval 'N' day from dual
注释:"N"表示需要减去或者加上的天数
17〉获得若干年前的时间
select sysdate,add_months(sysdate,-12*N) from dual;
或者
select sysdate,sysdate - interval 'N' year from dual
16〉获得若干年后的时间
select sysdate,add_months(sysdate,12*N) from dual;
或者
select sysdate,sysdate + interval 'N' year from dual
注释:"N"表示需要减去或者加上的年数
17〉相隔若干小时的时间
select sysdate,sysdate - M * interval 'N' hour from dual
18〉检索出某一个日期所在月份的所有天信息
- select trunc(to_date('X','yyyymmdd'),'mm') from dual
- union all
- select trunc(to_date('X','yyyymmdd'),'mm') + rownum from dual
- connect by rownum <= (last_day(to_date('X','yyyymmdd')) - trunc(to_date('X','yyyymmdd'),'mm'))
select trunc(to_date('X','yyyymmdd'),'mm') from dual union all select trunc(to_date('X','yyyymmdd'),'mm') + rownum from dual connect by rownum <= (last_day(to_date('X','yyyymmdd')) - trunc(to_date('X','yyyymmdd'),'mm'))
或者
- select first + rownum - 1 myday
- from (select trunc(to_date('X','yyyymmdd'),'MM') first,trunc(last_day(to_date('X','yyyymmdd'))) last from dual)
- connect by rownum <= last - first + 1
select first + rownum - 1 myday from (select trunc(to_date('X','yyyymmdd'),'MM') first,trunc(last_day(to_date('X','yyyymmdd'))) last from dual) connect by rownum <= last - first + 1
其中:字符串'X'表示某一个日期
19〉怎样知道今天是星期几
select to_char(sysdate,'day') from dual;
在获取之前可以设置日期语言,如:
ALTER SESSION SET NLS_DATE_LANGUAGE='AMERICAN';
还可以在函数中指定
- select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE = AMERICAN') from dual;
select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE = AMERICAN') from dual;
其它更多用法,可以参考to_char与to_date函数
20〉本月的天数
SELECT to_char(last_day(SYSDATE),'dd') days FROM dual
21〉今年的天数
- select add_months(trunc(sysdate, 'year'), 12) - trunc(sysdate, 'year') /*下一年的第一天减去今年的第一天*/
- from dual
select add_months(trunc(sysdate, 'year'), 12) - trunc(sysdate, 'year') /*下一年的第一天减去今年的第一天*/ from dual
22〉下个星期一的日期
SELECT Next_day(SYSDATE,'monday') FROM dual
23〉怎么样从数据库中获得毫秒
9i以上版本,有一个timestamp类型获得毫秒,如
- select to_char(systimestamp ,'yyyy-mm-dd hh24:mi:ssxff') time1,
- to_char(current_timestamp,'yyyy-mm-dd hh24:mi:ssxff') time2
- from dual;
select to_char(systimestamp ,'yyyy-mm-dd hh24:mi:ssxff') time1, to_char(current_timestamp,'yyyy-mm-dd hh24:mi:ssxff') time2 from dual;
24〉检索某一年度的日历表:
- select case
- when (new_yweek = min(new_yweek)
- over(partition by mon order by new_yweek)) then
- mon
- else
- null
- end as mon,
- new_yweek as yweek,
- row_number() over(partition by mon order by new_yweek) as mweek,
- sum(decode(wday, '1', mday, null)) as sunday,
- sum(decode(wday, '2', mday, null)) as monday,
- sum(decode(wday, '3', mday, null)) as tuesday,
- sum(decode(wday, '4', mday, null)) as wednesday,
- sum(decode(wday, '5', mday, null)) as thursday,
- sum(decode(wday, '6', mday, null)) as friday,
- sum(decode(wday, '7', mday, null)) as saturday,
- &year as year
- from (select to_date(&year || '0101', 'yyyymmdd') + rownum - 1 as everyday,
- to_char(to_date(&year || '0101', 'yyyymmdd') + rownum - 1,
- 'mm') as mon,
- to_char(to_date(&year || '0101', 'yyyymmdd') + rownum - 1,
- 'w') as mweek,
- to_char(to_date(&year || '0101', 'yyyymmdd') + rownum - 1,
- 'ww') as yweek,
- case
- when (to_char(to_date(&year || '0101', 'yyyymmdd'), 'd') > '1') and
- (to_char(to_date(&year || '0101', 'yyyymmdd') + rownum - 1,
- 'd') <
- to_char(to_date(&year || '0101', 'yyyymmdd'), 'd')) then
- to_char(to_char(to_date(&year || '0101', 'yyyymmdd') +
- rownum - 1,
- 'ww') + 1,
- 'fm00')
- else
- to_char(to_date(&year || '0101', 'yyyymmdd') + rownum - 1,
- 'ww')
- end as new_yweek,
- to_char(to_date(&year || '0101', 'yyyymmdd') + rownum - 1,
- 'd') as wday,
- to_char(to_date(&year || '0101', 'yyyymmdd') + rownum - 1,
- 'dd') as mday
- from (select rownum r from dual connect by rownum <= 366)
- where rownum <=
- to_char(to_date(&year || '1231', 'yyyymmdd'), 'ddd'))
- group by mon, new_yweek
select case when (new_yweek = min(new_yweek) over(partition by mon order by new_yweek)) then mon else null end as mon, new_yweek as yweek, row_number() over(partition by mon order by new_yweek) as mweek, sum(decode(wday, '1', mday, null)) as sunday, sum(decode(wday, '2', mday, null)) as monday, sum(decode(wday, '3', mday, null)) as tuesday, sum(decode(wday, '4', mday, null)) as wednesday, sum(decode(wday, '5', mday, null)) as thursday, sum(decode(wday, '6', mday, null)) as friday, sum(decode(wday, '7', mday, null)) as saturday, &year as year from (select to_date(&year || '0101', 'yyyymmdd') + rownum - 1 as everyday, to_char(to_date(&year || '0101', 'yyyymmdd') + rownum - 1, 'mm') as mon, to_char(to_date(&year || '0101', 'yyyymmdd') + rownum - 1, 'w') as mweek, to_char(to_date(&year || '0101', 'yyyymmdd') + rownum - 1, 'ww') as yweek, case when (to_char(to_date(&year || '0101', 'yyyymmdd'), 'd') > '1') and (to_char(to_date(&year || '0101', 'yyyymmdd') + rownum - 1, 'd') < to_char(to_date(&year || '0101', 'yyyymmdd'), 'd')) then to_char(to_char(to_date(&year || '0101', 'yyyymmdd') + rownum - 1, 'ww') + 1, 'fm00') else to_char(to_date(&year || '0101', 'yyyymmdd') + rownum - 1, 'ww') end as new_yweek, to_char(to_date(&year || '0101', 'yyyymmdd') + rownum - 1, 'd') as wday, to_char(to_date(&year || '0101', 'yyyymmdd') + rownum - 1, 'dd') as mday from (select rownum r from dual connect by rownum <= 366) where rownum <= to_char(to_date(&year || '1231', 'yyyymmdd'), 'ddd')) group by mon, new_yweek
发表评论
-
oracle for loop 用法
2013-04-27 16:52 1210Oracle存储过程for用法,每500条提交一次。 cr ... -
oracle start with....connect by oracle树
2011-04-22 10:27 1017ORACLE 提供了一个有趣的 ... -
package and package body
2011-02-22 11:34 1078创建包 create or replace pa ... -
oracle 存储过程、游标
2010-12-29 11:11 2032.基本结构 CREATE OR REPLACE PROCEDU ... -
oracle 安全
2010-10-14 09:45 6351。当 登陆Oracle 时 用 userName/pwd ... -
卸载Oracle
2010-10-11 13:02 9016.1: 开始->设置->控制面板->管理工具->服 ... -
instr 函数应用
2010-08-28 08:47 891在Oracle中,可以使用instr函数对某个字符串进行判 ... -
keep ()函数
2010-08-10 10:08 1029select wzbm,max(dzrq) keep(dens ... -
decode 函数 行变列
2010-08-09 20:06 880http://blog.163.com/zjp8862@12 ... -
Oracle 游标
2010-08-04 12:29 810create or replace procedure pro ... -
over函数
2010-07-27 10:56 732<!--StartFragment --> h ... -
oracle 命令行
2010-06-30 11:56 9271.登陆 cmd -sqlplus syste ... -
Oracle 存储过程
2010-05-10 17:41 913create or replace procedure myp ... -
Oracle 触发器
2010-05-10 16:51 764create table zjp_test ( name ... -
Oracle死锁
2010-05-03 11:18 841公司的DBA不在,发现处理数据库问题真的是一件头痛的事情,数据 ... -
oracle 和tomcat 8080 端口重复问题
2010-04-12 13:12 1162遇见一个tomcat 和 Oracle 8080端口重复的问 ... -
工作中的一个列子
2010-04-06 17:23 806有两张表 A表 -------------- ... -
基础的语句
2010-03-22 13:33 8601,alter table tableName add co ... -
表和字段的注释
2010-02-06 21:33 8811、给表加注释COMMENT ON TABLE land.la ...
相关推荐
Oracle提供了丰富的日期时间函数,用于处理和分析日期时间数据。针对标题"oracle日期时间判断函数"和描述中提到的内容,我们可以深入探讨两个关键的函数,它们主要用于判断字符串是否可以转换为合法的日期时间格式。...
Oracle 日期处理函数是数据库管理系统中非常重要的一部分,最近看到有人在做 T-SQL 与 PL/SQL 的转化,问了些有关时间函数的处理。在 PL/SQL 中,Oracle 提供了其他的方法来处理日期函数,例如 DATE_ADD 函数。在 T-...
ORACLE日期时间函数大全
简单的oracle 时间比较函数,自己在网上找到并加以整理出来。
Oracle 日期函数是 Oracle 数据库中的一组功能强大且广泛使用的函数,它们可以对日期进行各种操作和计算,本次练习涵盖了 Oracle 中常用的日期函数,包括获取当前系统时间、对日期的月进行加减、获取给定日期所在月...
ORACLE 中日期和时间函数汇总 Oracle 中的日期和时间函数是数据库管理系统中非常重要的一部分,掌握这些函数可以帮助开发者和 DBA 更好地处理日期和时间相关的操作。 日期和字符转换函数 Oracle 中提供了两个...
为了提供与Oracle数据库兼容的功能,PostgreSQL包含了丰富的日期/时间函数。本文将详细阐述这些函数的使用及其特点。 首先,我们要理解一个示例中的疑惑:在SQL查询`select now(), pg_sleep_for('5 second'), now()...
Oracle常用日期型函数,大家经常想用的,又不想记得。现在,给你一个方便的资源
通过学习和掌握以上Oracle日期函数,你可以轻松地进行日期和时间的计算、比较和格式化,提升数据库操作的效率。同时,了解如何处理时区问题也是非常重要的,特别是在分布式系统中。希望这些知识对你在处理Oracle...
Oracle 数据库中并没有直接使用 `CONVERT` 函数来处理日期和时间的方式,这个函数在 SQL Server 中被用来进行数据类型的转换,特别是日期和时间类型的转换。然而,Oracle 提供了类似的功能,如 `TO_DATE` 和 `TO_...
Oracle 日期时间函数大全 Oracle 日期时间函数大全是 Oracle 中处理日期和时间的函数大全。这些函数可以用于各种日期和时间相关的操作,如日期转换、时间计算等。 日期和时间函数 Oracle 提供了多种日期和时间...
* 在使用日期及时间函数时,需要注意函数的使用规则,避免出现错误。 Oracle 日期及时间格式是 Oracle 编程语言中一个非常重要的组成部分,了解 Oracle 日期及时间格式可以帮助开发者更好地处理日期及时间相关的...
单行函数处理单行数据,如字符串操作、数学运算和日期时间处理等。组函数,如SUM、AVG和COUNT,用于处理多行数据并返回单一结果。你可以自定义函数,也可以使用Oracle提供的内置函数。 在数据库管理方面,表是数据...
Oracle日期函数大全是Oracle数据库中处理日期和时间的函数大全,包括TO_DATE、TO_CHAR等函数。这些函数可以对日期和时间进行各种操作,例如将日期转换为字符串、获取当前日期和时间、计算两个日期之间的天数等。 TO...
日期类型包括日期、时间等。 十、基本类型(系统预定义类型) PL/SQL 提供了多种基本类型,例如数字、字符、日期等。这些类型是 Oracle 预定义的,用户可以直接使用。 十一、复合类型(用户自定义类型) PL/SQL ...
以下是一些关键的Oracle日期处理函数和SQL语句的详细说明: 1. **TO_DATE函数**:用于将字符串转换为日期。例如,`TO_DATE('2022-04-05', 'YYYY-MM-DD')`将字符串'2022-04-05'转换为日期。日期格式必须与提供的模式...