频道栏目
首页 > 数据库 > Oracle > 正文
Oracle数据库之SQL单行函数---to_date to_char
2013-04-06 14:35:53         来源:kiritor的专栏  
收藏   我要投稿

Oracle数据库之SQL单行函数---to_date to_char

日期显示格式
  首先看看其对于日期显示的格式问题我们直接以一个实例为例("2013/4/5 19:35:35")
  Year:
  yy:表示显示两位年  显示13
  yyy:显示三位年  显示013
  yyyy:显示四位年  显示2013
  Month
  mm:表示两位月  显示04
  mon:字符集表示  显示APR(英文缩写)
  month:字符集表示  显示APRIL(英文全写)
  Day
  dd  number类型  当月第几天  显示05
  ddd  number类型  当年第几天  显示095
  dy :字符集  当周第几天简写  显示fri,中文版为星期五
  day :字符集  当周第几天全写  显示friday,中文版为星期五
  ddspth:字符集  当周第几天全写  显示为fifth
  Hour
  hh : 两个数字  12小时进制  显示07
  hh24: 两个数字  24小时进制  显示19
  Minute
  mi : 两个数字  60进制  显示35
  second
  ss : 两个数字  60进制  显示35
  Q:显示季度  显示为2
  WW :当年第几周  显示为14
  W: 当月第几周  显示1
  以上基本将日期的格式说完了,肯定会存在遗漏,遇到之后再慢慢完善!
  TO_DATE()
  to_date是将字符串或者数字转换为日期
  TO_CHAR()
  to_char是将日期按照指定的格式转换为字符串
  至于其具体用法,直接给出一些实例,在实战中学习
 例子:
  1、to_date  to_char用法 

[sql] 

--日期格式转换为字符串 
select to_char(sysdate,'yyyy-mm-dd hh:mi:ss') AS nowTime from dual; 
--获取日期的年,至于月、日等就不演示了 
select to_char(SYSDATE,'yyyy') as nowYear FROM dual; 
--将字符查转换为日期 
select TO_DATE('2012/04/25 09:24:25','yyyy/mm/dd hh:mi:ss') from dual; 

  2、求某天是星期几 

[sql] 

select to_char(to_date('2012-04-05 09:24','yyyy-mm-dd hh:mi:ss'),'day') 
 from dual; 

 
  3、设置会话语言 

[sql] 

select TO_DATE ('2002-08-26', 'YYYY-mm-dd', 'NLS_DATE_LANGUAGE = American') 
 from dual; 

  4、计算两个日期之间的天数

[sql] 

select floor(sysdate- to_date('2002-08-26', 'YYYY-mm-dd')) FROM DUAL; 

  5、时间为null的使用

[sql] 

select to_date(NULL) from dual; 

  6、是否在一个时间段中

[sql] 

select *from emp where hiredate between to_date('20011201','yyyymmdd') 
 and to_date('20011231','yyyymmdd'); 

  7、查找2002-02-28至2002-02-01间除星期一和七的天数 

[sql] 

select count(*) from 
 ( 
 select rownum-1 rnum 
 from all_objects 
 where rownum <= to_date('2002-02-28','yyyy-mm-dd') - to_date('2002- 
 02-01','yyyy-mm-dd')+1 
 ) 
 where to_char( to_date('2002-02-01','yyyy-mm-dd')+rnum-1, 'D' ) 
 not in ( '1', '7' ); 

  8、计算一段时间的月份数

[sql] 

select months_between(to_date('01-31-1999','MM-DD-YYYY'),to_date('12-31-1996', 
'MM-DD-YYYY')) "MONTHS" FROM DUAL; 

  9、年月日的处理

[sql] 

 select older_date, 
 newer_date, 
 years, 
 months, 
 abs( 
 trunc( 
 newer_date- 
 add_months( older_date,years*12+months ) 
 ) 
 ) days 
 
from ( select 
 trunc(months_between( newer_date, older_date )/12) YEARS, 
 mod(trunc(months_between( newer_date, older_date )),12 ) MONTHS, 
 newer_date, 
 older_date 
from ( 
 select hiredate older_date, add_months(hiredate,rownum)+rownum newer_date 
 from emp 
 ) 

 

  10、处理月份天数不定的方法

[sql] 

select to_char(add_months(last_day(sysdate) +1, -2), 'yyyymmdd'), 
 last_day(sysdate) from dual; 

  11、找出今年的天数

[sql] 

select add_months(trunc(sysdate,'year'), 12) - trunc(sysdate,'year') from dual 

  12、计算小时、分、毫秒
 

[sql] 

select 
 Days, 
 A, 
 TRUNC(A*24) Hours, 
 TRUNC(A*24*60 - 60*TRUNC(A*24)) Minutes, 
 TRUNC(A*24*60*60 - 60*TRUNC(A*24*60)) Seconds, 
 TRUNC(A*24*60*60*100 - 100*TRUNC(A*24*60*60)) mSeconds 
from 
 ( 
 select 
 trunc(sysdate) Days, 
 sysdate - trunc(sysdate) A 
 from dual 
) ; 

 

  ok!练习就到这里吧!


点击复制链接 与好友分享!回本站首页
相关TAG标签 函数 数据库
上一篇:怎样格式化dbms_metadata.get_ddl存储过程的输出
下一篇:ADD_MONTHS()如果第二个参数是小数会怎么样
相关文章
图文推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站