知识大全 Oracle中对时间操作的一些总结
Posted 时间
篇首语:知识能使你增加一双眼睛。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Oracle中对时间操作的一些总结相关的知识,希望对你有一定的参考价值。
Oracle中对时间操作的一些总结 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
Oracle中对时间操作的一些总结
sysdate+( / / / ) 在系统时间基础上延迟 秒
sysdate+ / / 在系统时间基础上延迟 分钟
sysdate+ / 在系统时间基础上延迟 小时
sysdate+ 在系统时间基础上延迟 天
add_months(sysdate ) 在系统时间基础上延迟 月
add_months(sysdate * ) 在系统时间基础上延迟 年
上月末的日期 select last_day(add_months(sysdate )) from dual;
本月的最后一秒 select trunc(add_months(sysdate ) MM ) / / / from dual
本周星期一的日期 select trunc(sysdate day )+ 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 ) + AS weekOfMon FROM dual
本月的天数
SELECT to_char(last_day(SYSDATE) dd ) days FROM dual
今年的天数
select add_months(trunc(sysdate year ) ) 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( );
insert into t values( );
insert into t values( );
insert into t values( );
insert into t values( );
insert into t values( );
这里假定日期都是不带时间的 否则在所有日期前加trunc即可
select s e e s+ total_days
trunc((e s+ )/ )* + length(replace(substr( to_char(s d ) mod(e s+ )) )) work_days
from t;
drop table t;
引此 ?s= cd f b bc adbe cde f &threadid= &perpage= &pagenumber=
================================================================================
判断当前时间是上午下午还是晚上
SELECT CASE
WHEN to_number(to_char(SYSDATE hh )) BEEEN AND THEN 上午
WHEN to_number(to_char(SYSDATE hh )) BEEEN AND THEN 下午
WHEN to_number(to_char(SYSDATE hh )) BEEEN AND THEN 晚上
END
FROM dual;
================================================================================
Oracle 中的一些处理日期
将数字转换为任意时间格式 如秒:需要转换为天/小时
SELECT to_char(floor(TRUNC( /( * ))/ ))|| 天 ||to_char(mod(TRUNC( /( * )) ))|| 小时 FROM DUAL
TO_DATE格式
Day:
dd number
dy abbreviated fri
day spelled out friday
ddspth spelled out ordinal elfth
Month:
mm number
mon abbreviated mar
month spelled out march
Year:
yy o digits
yyyy four digits
小时格式下时间范围为 : : : :
小时格式下时间范围为 : : : :
日期和字符转换函数用法(to_date to_char)
select to_char( to_date( J ) Jsp ) from dual
显示Two Hundred Twenty Two
求某天是星期几
select to_char(to_date( yyyy mm dd ) day ) from dual;
星期一
select to_char(to_date( yyyy mm dd ) day NLS_DATE_LANGUAGE = American ) from dual;
monday
设置日期语言
ALTER SESSION SET NLS_DATE_LANGUAGE= AMERICAN ;
也可以这样
TO_DATE ( YYYY mm dd NLS_DATE_LANGUAGE = American )
两个日期间的天数
select floor(sysdate to_date( yyyymmdd )) from dual;
时间为null的用法
select id active_date from table
UNION
select TO_DATE(null) from dual;
注意要用TO_DATE(null)
a_date beeen to_date( yyyymmdd ) and to_date( yyyymmdd )
那么 月 号中午 点之后和 月 号的 点之前是不包含在这个范围之内的
所以 当时间需要精确的时候 觉得to_char还是必要的
日期格式冲突问题
输入的格式要看你安装的ORACLE字符集的类型 比如: US ASCII date格式的类型就是: Jan
alter system set NLS_DATE_LANGUAGE = American
alter session set NLS_DATE_LANGUAGE = American
或者在to_date中写
select to_char(to_date( yyyy mm dd ) day NLS_DATE_LANGUAGE = American ) from dual;
注意我这只是举了NLS_DATE_LANGUAGE 当然还有很多
可查看
select * from nls_session_parameters
select * from V$NLS_PARAMETERS
select count(*)
from ( select rownum rnum
from all_objects
where rownum <= to_date( yyyy mm dd ) to_date( yyyy mm dd )+
)
where to_char( to_date( yyyy mm dd )+rnum D )
not
in ( )
查找 至 间除星期一和七的天数
在前后分别调用DBMS_UTILITY GET_TIME 让后将结果相减(得到的是 / 秒 而不是毫秒)
select months_beeen(to_date( MM DD YYYY )
to_date( MM DD YYYY )) MONTHS FROM DUAL;
select months_beeen(to_date( MM DD YYYY )
to_date( MM DD YYYY )) MONTHS FROM DUAL;
Next_day的用法
Next_day(date day)
Monday Sunday for format code DAY
Mon Sun for format code DY
for format code D
select to_char(sysdate hh:mi:ss ) TIME from all_objects
注意 第一条记录的TIME 与最后一行是一样的
可以建立一个函数来处理这个问题
create or replace function sys_date return date is
begin
return sysdate;
end;
select to_char(sys_date hh:mi:ss ) from all_objects;
获得小时数
SELECT EXTRACT(HOUR FROM TIMESTAMP : : ) from offer
SQL> select sysdate to_char(sysdate hh ) from dual;
SYSDATE TO_CHAR(SYSDATE HH )
: :
SQL> select sysdate to_char(sysdate hh ) from dual;
SYSDATE TO_CHAR(SYSDATE HH )
: :
获取年月日与此类似
年月日的处理
select older_date
newer_date
years
months
abs(
trunc(
newer_date
add_months( older_date years* +months )
)
) days
from ( select
trunc(months_beeen( newer_date older_date )/ ) YEARS
mod(trunc(months_beeen( newer_date older_date ))
) MONTHS
newer_date
older_date
from ( select hiredate older_date
add_months(hiredate rownum)+rownum newer_date
from emp )
)
处理月份天数不定的办法
select to_char(add_months(last_day(sysdate) + ) yyyymmdd ) last_day(sysdate) from dual
找出今年的天数
select add_months(trunc(sysdate year ) ) trunc(sysdate year ) from dual
闰年的处理方法
to_char( last_day( to_date( ¦ ¦ :year mmyyyy ) ) dd )
如果是 就不是闰年
yyyy与rrrr的区别
YYYY TO_C
yyyy
rrrr
yyyy
rrrr
不同时区的处理
select to_char( NEW_TIME( sysdate GMT EST ) dd/mm/yyyy hh:mi:ss ) sysdate
from dual;
秒钟一个间隔
Select TO_DATE(FLOOR(TO_CHAR(sysdate SSSSS )/ ) * SSSSS ) TO_CHAR(sysdate SSSSS )
from dual
: :
SSSSS表示 位秒数
一年的第几天
select TO_CHAR(SYSDATE DDD ) sysdate from dual
: :
计算小时 分 秒 毫秒
select
Days
A
TRUNC(A* ) Hours
TRUNC(A* * *TRUNC(A* )) Minutes
TRUNC(A* * * *TRUNC(A* * )) Seconds
TRUNC(A* * * * *TRUNC(A* * * )) mSeconds
from
(
select
trunc(sysdate) Days
sysdate trunc(sysdate) A
from dual
)
select * from tabname
order by decode(mode FIFO )*to_char(rq yyyymmddhh miss );
//
floor((date date ) / ) 作为年
floor((date date ) / ) 作为月
mod(mod(date date ) )作为日
next_day函数
next_day(sysdate )是从当前开始下一个星期五 后面的数字是从星期日开始算起
日 一 二 三 四 五 六
select (sysdate to_date( : : yyyy mm dd hh :mi:ss ))* * * from dual
日期 返回的是天 然后 转换为ss
转此 ;ID=
将数字转换为任意时间格式 如秒:需要转换为天/小时
SELECT to_char(floor(TRUNC( /( * ))/ ))|| 天 ||to_char(mod(TRUNC( /( * )) ))|| 小时 FROM DUAL
TO_DATE格式
Day:
dd number
dy abbreviated fri
day spelled out friday
ddspth spelled out ordinal elfth
Month:
mm number
mon abbreviated mar
month spelled out march
Year:
yy o digits
yyyy four digits
小时格式下时间范围为 : : : :
小时格式下时间范围为 : : : :
日期和字符转换函数用法(to_date to_char)
select to_char( to_date( J ) Jsp ) from dual
显示Two Hundred Twenty Two
求某天是星期几
select to_char(to_date( yyyy mm dd ) day ) from dual;
星期一
select to_char(to_date( yyyy mm dd ) day NLS_DATE_LANGUAGE = American ) from dual;
monday
设置日期语言
ALTER SESSION SET NLS_DATE_LANGUAGE= AMERICAN ;
也可以这样
TO_DATE ( YYYY mm dd NLS_DATE_LANGUAGE = American )
两个日期间的天数
select floor(sysdate to_date( yyyymmdd )) from dual;
时间为null的用法
select id active_date from table
UNION
select TO_DATE(null) from dual;
注意要用TO_DATE(null)
a_date beeen to_date( yyyymmdd ) and to_date( yyyymmdd )
那么 月 号中午 点之后和 月 号的 点之前是不包含在这个范围之内的
所以 当时间需要精确的时候 觉得to_char还是必要的
日期格式冲突问题
输入的格式要看你安装的ORACLE字符集的类型 比如: US ASCII date格式的类型就是: Jan
alter system set NLS_DATE_LANGUAGE = American
alter session set NLS_DATE_LANGUAGE = American
或者在to_date中写
select to_char(to_date( yyyy mm dd ) day NLS_DATE_LANGUAGE = American ) from dual;
注意我这只是举了NLS_DATE_LANGUAGE 当然还有很多
可查看
select * from nls_session_parameters
select * from V$NLS_PARAMETERS
select count(*)
from ( select rownum rnum
from all_objects
where rownum <= to_date( yyyy mm dd ) to_date( yyyy mm dd )+
)
where to_char( to_date( yyyy mm dd )+rnum D )
not
in ( )
查找 至 间除星期一和七的天数
在前后分别调用DBMS_UTILITY GET_TIME 让后将结果相减(得到的是 / 秒 而不是毫秒)
select months_beeen(to_date( MM DD YYYY )
to_date( MM DD YYYY )) MONTHS FROM DUAL;
select months_beeen(to_date( MM DD YYYY )
to_date( MM DD YYYY )) MONTHS FROM DUAL;
Next_day的用法
Next_day(date day)
Monday Sunday for format code DAY
Mon Sun for format code DY
for format code D
select to_char(sysdate hh:mi:ss ) TIME from all_objects
注意 第一条记录的TIME 与最后一行是一样的
可以建立一个函数来处理这个问题
create or replace function sys_date return date is
begin
return sysdate;
cha138/Article/program/Oracle/201311/16736相关参考
在Oracle10g和9i上一些新的特性的总结 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!内部P
Oracle中日期时间的操作比较和加减 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Oracl
Oracle中对COLUMNS 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 本文详细讲述了Or
Delphi中对Oracle存取RTF文档 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 关系数
自己对oraclesql的一些优化总结自己也记录下来也希望对大家有帮助 一使用where少使用having; 二查两张以上表时把记录少的放在右边; 三减少对表的访问次数; 四有where子
Oracle中对像名大小写敏感性的深入解析 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一般情
知识大全 基于php常用函数总结(数组,字符串,时间,文件操作)
数组:【重点】implode(分隔arr)把数组值数据按指定字符连接起来例如$arr=array();$str=implode($arr);explode([分隔]arr)按指定规则对一个字符串进
下面的是关于sql*loader的使用的一点总结有些是来自itpub上的一些网友的总结 大部分是oracle专家高级编程上的实例只是我实践以后写的结果 sqlldruserid=lgo
在oracle中有很多关于日期的函数如: add_months()用于从一个日期值增加或减少一些月份 date_value:=add_months(date_valuenumber_of_mo
C#中对DatagridView部分常用操作 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! (最