知识大全 Oracle日期时间函数的应用
Posted 知
篇首语:香花不一定好看,会说不一定能干。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Oracle日期时间函数的应用相关的知识,希望对你有一定的参考价值。
Oracle日期时间函数的应用 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
转换函数
与date操作关系最大的就是两个转换函数 to_date() to_char()
to_date() 作用将字符类型按一定格式转化为日期类型
具体用法:to_date( yyyy mm dd ) 前者为字符串 后者为转换日期格式 注意 前后两者要以一对应
如;to_date( : : yyyy mm dd hh :mi:ss ) 将得到具体的时间
多种日期格式
YYYY 四位表示的年份
YYY YY Y 年份的最后三位 两位或一位 缺省为当前世纪
MM ~ 的月份编号
MONTH 九个字符表示的月份 右边用空格填补
MON 三位字符的月份缩写
WW 一年中的星期
D 星期中的第几天
DD 月份中的第几天
DDD 年所中的第几天
DAY 九个字符表示的天的全称 右边用空格补齐
HH HH 一天中的第几个小时 进制表示法
HH 一天中的第几个小时 取值为 ~
MI 一小时中的分钟
SS 一分钟中的秒
SSSS 从午夜开始过去的秒数
to_char():将日期转按一定格式换成字符类型
SQL> select to_char(sysdate yyyy mm dd hh :mi:ss ) time from dual;
TIME
: :
即把当前时间按yyyy mm dd hh :mi:ss格式转换成字符类型
在oracle中处理日期大全
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
小时格式下时间范围为 : : : :
小时格式下时间范围为 : : : :
[ZT]日期和??函???
日期和字符转换函数用法(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 )是从当前开始下一个星期五 后面的数字是从星期日开始算起
日 一 二 三 四 五 六
oracle中有很多关于日期的函数
在oracle中有很多关于日期的函数 如
add_months()用于从一个日期值增加或减少一些月份
date_value:=add_months(date_value number_of_months)
例
SQL> select add_months(sysdate ) Next Year from dual;
Next Year
月
SQL> select add_months(sysdate ) Last Year from dual;
Last Year
月
SQL>
current_date()返回当前会放时区中的当前日期
date_value:=current_date
SQL> column sessiontimezone for a
SQL> select sessiontimezone current_date from dual;
SESSIONTIMEZONE CURRENT_DA
+ : 月
SQL> alter session set time_zone= :
/
会话已更改
SQL> select sessiontimezone current_timestamp from dual;
SESSIONTIMEZONE CURRENT_TIMESTAMP
: 月 下午 :
SQL>
current_timestamp()以timestamp with time zone数据类型返回当前会放时区中的当前日期
timestamp_with_time_zone_value:=current_timestamp([timestamp_precision])
SQL> column sessiontimezone for a
SQL> column current_timestamp format a
SQL> select sessiontimezone current_timestamp from dual;
SESSIONTIMEZONE CURRENT_TIMESTAMP
+ : 月 上午 + :
SQL> alter session set time_zone= :
/
会话已更改
SQL> select sessiontimezone current_timestamp from dual;
SESSIONTIMEZONE CURRENT_TIMESTAMP
: 月 下午 :
SQL>
dbtimezone()返回时区
varchar_value:=dbtimezone
SQL> select dbtimezone from dual;
DBTIME
:
SQL>
extract()找出日期或间隔值的字段值
date_value:=extract(date_field from [datetime_value|interval_value])
SQL> select extract(month from sysdate) This Month from dual;
This Month
SQL> select extract(year from add_months(sysdate )) Years Out from
dual;
Years Out
SQL>
last_day()返回包含了日期参数的月份的最后一天的日期
date_value:=last_day(date_value)
SQL> select last_day(date ) Leap Yr? from dual;
Leap Yr?
月
SQL> select last_day(sysdate) Last day of this month from dual;
Last day o
月
SQL>
localtimestamp()返回会话中的日期和时间
timestamp_value:=localtimestamp
SQL> column localtimestamp format a
SQL> select localtimestamp from dual;
LOCALTIMESTAMP
月
下午
SQL> select localtimestamp current_timestamp from dual;
LOCALTIMESTAMP CURRENT_TIMESTAMP
月 月 下午 + :
下午
SQL> alter session set time_zone= : ;
会话已更改
SQL> select localtimestamp to_char(sysdate DD MM YYYY HH:MI:SS AM )
SYSDATE from dual;
LOCALTIMESTAMP SYSDATE
月 : : 下午
下午
SQL>
months_beeen()判断两个日期之间的月份数量
number_value:=months_beeen(date_value date_value)
SQL> select months_beeen(sysdate date ) from dual;
MONTHS_BEEEN(SYSDATE DATE )
SQL> select months_beeen(sysdate date ) from dual;
MONTHS_BEEEN(SYSDATE DATE )
SQL>
next_day()给定一个日期值 返回由第二个参数指出的日子第一次出现在的日期值(应返回相应日子的名称字符串)
?周相?日期函?
查询某周的第一天
select trunc(decode(ww to_date(yy || yyyyddmm )
to_date(yy || || to_char(ww * ) yyyy ddd )) d ) last_day
from (select substr( ) yy to_number(substr(
)) ww
from dual)
select
trunc(to_date(substr( )||to_char((to_number(substr( )))* ) yyyy ddd ) d )
first_day from dual
select min(v_date) from
(select (to_date( yyyymm ) + rownum) v_date
from all_tables
where rownum < )
where to_char(v_date yyyy iw ) =
查询某周的最后一天
select trunc(decode(ww to_date(yy || yyyyddmm )
to_date(yy || || to_char(ww * ) yyyy ddd )) d )
first_day
from (select substr( ) yy to_number(substr(
)) ww
from dual)
select
trunc(to_date(substr( )||to_char((to_number(substr( )))* ) yyyy ddd ) d )
last_day from dual
select max(v_date) from
(select (to_date( yyyymm ) + rownum) v_date
from all_tables
where rownum < )
where to_char(v_date yyyy iw ) =
查询某周的日期
select min_date to_char(min_date day ) day from
(select to_date(substr( )|| +rownum yyyyddd )
min_date
from all_tables
where rownum <=
decode(mod(to_number(substr( )) ) )
union
select to_date(substr( ) ||
decode(mod(to_number(substr( )) ) )+rownum yyyyddd )
min_date
from all_tables
where rownum <=
union
select to_date(substr( )+ || +rownum yyyyddd )
min_date
from all_tables
where rownum <=
)
cha138/Article/program/Oracle/201311/18444相关参考
本文提供vbscript时间函数的概要介绍可应对一般应用具体特殊需求可进一步搜索 date()获取日期格式 time()获取时间格式:: now()获取日期和时间格式:: d=date()
TRUNC(fordates) TRUNC函数为指定元素而截去的日期值 其具体的语法格式如下 TRUNC(date[fmt]) 其中 date一个日期值 fmt日期格式该日期将由指定的
在oracle中有很多关于日期的函数如: add_months()用于从一个日期值增加或减少一些月份 date_value:=add_months(date_valuenumber_of_mo
WEEKDAY(date) DAYOFMONTH(date) DAYOFYEAR(date) MONTH(date) DAYNAME(date) MONTHNAME(date) QUA
Oracle中table函数的应用 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 表函数可接受查
asp教程格式化时间函数 本款函数可以根据用户给定的时间日期进行年月日时分秒等只要用户给定不同的style参数就可以显示不同风格的时间日期 functionformattime(testtim
思路是先将oracle中时间字段转化成字段串然后与字符串模糊查询 如下 StringstrSQLSearch=SELECT*FROM+objConfigDBgetTableName()+WHE
Oracle中日期时间的操作比较和加减 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Oracl
日期函数Now()Date()Time()大家都用得多了这些函数是读取系统日期时间的可是遇到需要改变操作系统的时间时他们就一点办法也没有而Delphi又没有提供相关的函数所以只好求助于API函数S
建立外部表目录 createdirectoryextdirase:appextdir; 定义外部表 createtableext_test ( rtdate rtypechar()