知识大全 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

相关参考

知识大全 asp中的一些日期时间函数

  本文提供vbscript时间函数的概要介绍可应对一般应用具体特殊需求可进一步搜索  date()获取日期格式  time()获取时间格式::  now()获取日期和时间格式::  d=date()

知识大全 oracle里的trunc函数

  TRUNC(fordates)  TRUNC函数为指定元素而截去的日期值  其具体的语法格式如下  TRUNC(date[fmt])  其中  date一个日期值  fmt日期格式该日期将由指定的

知识大全 oracle日期操作方法

  在oracle中有很多关于日期的函数如:  add_months()用于从一个日期值增加或减少一些月份  date_value:=add_months(date_valuenumber_of_mo

知识大全 mysql日期时间函数速查

  WEEKDAY(date)  DAYOFMONTH(date)  DAYOFYEAR(date)  MONTH(date)  DAYNAME(date)  MONTHNAME(date)  QUA

知识大全 Oracle中table函数的应用

Oracle中table函数的应用  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  表函数可接受查

知识大全 asp 格式化时间函数

  asp教程格式化时间函数  本款函数可以根据用户给定的时间日期进行年月日时分秒等只要用户给定不同的style参数就可以显示不同风格的时间日期  functionformattime(testtim

知识大全 oracle日期时间模糊查询的方法

  思路是先将oracle中时间字段转化成字段串然后与字符串模糊查询  如下  StringstrSQLSearch=SELECT*FROM+objConfigDBgetTableName()+WHE

知识大全 Oracle中日期时间的操作比较和加减

Oracle中日期时间的操作比较和加减  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Oracl

知识大全 delphi编程实现改变操作系统日期

  日期函数Now()Date()Time()大家都用得多了这些函数是读取系统日期时间的可是遇到需要改变操作系统的时间时他们就一点办法也没有而Delphi又没有提供相关的函数所以只好求助于API函数S

知识大全 oracle 外部表导入时间日期类型数据

  建立外部表目录  createdirectoryextdirase:appextdir;  定义外部表  createtableext_test  (  rtdate  rtypechar()