Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1208019
  • 博文数量: 350
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 5668
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-23 17:53
文章分类

全部博文(350)

文章存档

2013年(350)

分类: Oracle

2013-04-24 16:24:49

经常遇到有朋友问询关于日期时间格式化的问题(或可以通过格式化轻易解决),经过参考Oracle SQL Reference官方文档,并附上详细的应用示例综合成文,希望能够对大家学习和使用有所帮助。本篇可视为"oracle著名及非著名函数介绍"的补充!

环境:

SQL> select *from v$version;


BANNER

----------------------------------------------------------------

Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Prod

PL/SQL Release 10.2.0.3.0 - Production

CORE 10.2.0.3.0 Production

TNS for 32-bit Windows: Version 10.2.0.3.0 - Production

NLSRTL Version 10.2.0.3.0 - Production


SQL> SELECT SESSIONTIMEZONE FROM DUAL;

SESSIONTIMEZONE

---------------------------------------------------------------------------

+08:00


SQL> show parameter nls;


NAME TYPE VALUE

------------------------------------ ----------- ------------------------------

nls_date_format string yyyy-mm-dd hh24:mi:ss

nls_language string SIMPLIFIED CHINESE


一、日期及时间

格式串 说明及示例

---------- -----------------------------------------------------------

-/,.;: 指定返回字串分隔符

例如:

SQL> select to_char(sysdate,'yyyy/mm/dd') from dual;

TO_CHAR(SYSDATE,'YYYY/MM/DD')

-----------------------------

2007/12/14

SQL> select to_char(sysdate,'yyyy-mm-dd') from dual;

TO_CHAR(SYSDATE,'YYYY-MM-DD')

-----------------------------

2007-12-14


AD/A.D. 公元标识

例如:

SQL> select to_char(sysdate,'AD YYYY-MM-DD') from dual;

TO_CHAR(SYSDATE,'ADYYYY-MM-DD'

------------------------------

公元 2007-12-14


BC/B.C. 公元标识

例如

SQL> select to_char(sysdate,'BC YYYY-MM-DD') from dual;

TO_CHAR(SYSDATE,'BCYYYY-MM-DD'

------------------------------

公元 2007-12-14


AM/A.M. 子午线标识

例如:

SQL> select to_char(sysdate,'YYYY-MM-DD AM hh24:mi:ss') from dual;

TO_CHAR(SYSDATE,'YYYY-MM-DDAMH

------------------------------

2007-12-14 下午 13:41:58


PM/P.M. 子午线标识

例如:

SQL> select to_char(sysdate,'YYYY-MM-DD PM hh24:mi:ss') from dual;

TO_CHAR(SYSDATE,'YYYY-MM-DDPMH

------------------------------

2007-12-14 下午 13:42:23


CC/SCC 世纪标识,S前缀指定如遇公元前的显示,会在显示前加(-)

提示:

l 如果年份中最后两位数字在01到99(含)之间,则返回值等于年份前两位+1

l 如果年份中最后两位数字是00,则返回值与年份前两位相同

例如:

SQL> select to_char(to_date('2000-8-3','YYYY-MM-DD'),'cc') from dual;

TO_CHAR(TO_DATE('2000-8-3','YY

------------------------------

20

SQL> select to_char(to_date('2001-8-3','YYYY-MM-DD'),'cc') from dual;

TO_CHAR(TO_DATE('2001-8-3','YY

------------------------------

21


D 指定日期在周中的数值(范围:1-7)

例如:

SQL> select to_char(to_date('2007-12-14','yyyy-mm-dd'),'D') from dual;

TO_CHAR(TO_DATE('2007-12-14','

------------------------------

6


DD 指定日期在当月中的天数(范围:1-31)

例如:

SQL> select to_char(to_date('2007-12-14','yyyy-mm-dd'),'DD') from dual;

TO_CHAR(TO_DATE('2007-12-14','

------------------------------

14


DDD 指定日期在当年中的天数(范围:1-366)

例如:

SQL> select to_char(to_date('2007-12-14','yyyy-mm-dd'),'DDD') from dual;

TO_CHAR(TO_DATE('2007-12-14','

------------------------------

348


DAY 指定日期在周中的名称

例如:

SQL> select to_char(to_date('2007-12-14','yyyy-mm-dd'),'Day') from dual;

TO_CHAR(TO_DATE('2007-12-14','

------------------------------

星期五


MON 返回指定日期的月份简写

例如:

SQL> select to_char(sysdate,'MON') from dual;

TO_CHAR(SYSDATE,'MON')

----------------------

12

与DY同,中文看不出简写效果。


MONTH 返回指定日期的月份全称

例如:

SQL> select to_char(sysdate,'MONTH') from dual;

TO_CHAR(SYSDATE,'MONTH')

------------------------

12


YEAR/SYEAR 返回字符型年,此处s前缀与SCC处相同

例如:

SQL> select to_char(sysdate,'year') from dual;

TO_CHAR(SYSDATE,'YEAR')

------------------------------------------

two thousand seven


YYYY/SYYYY 返回数字型年,此处s前缀与SCC处相同

例如:

SQL> select to_char(sysdate,'yyyy') from dual;

TO_CHAR(SYSDATE,'YYYY')

-----------------------

2007


MM 返回指定日期的月份(范围:1-12)

例如:

SQL> select to_char(sysdate,'MM') from dual;

TO_CHAR(SYSDATE,'MM')

---------------------

12


HH 小时(范围:1-12)

例如:

SQL> select to_char(sysdate,'am hh') from dual;

TO_CHAR(SYSDATE,'AMHH')

-----------------------

下午 02


HH12 小时(范围:1-12)

例如:

SQL> select to_char(sysdate,'am hh12') from dual;

TO_CHAR(SYSDATE,'AMHH12')

-------------------------

下午 02


HH24 小时(范围:0-23)

例如:

SQL> select to_char(sysdate,'am hh24') from dual;

TO_CHAR(SYSDATE,'AMHH24')

-------------------------

下午 14


MI 返回指定时间的分钟(范围0-59)

例如:

SQL> select to_char(sysdate,'MI') from dual;

TO_CHAR(SYSDATE,'MI')

---------------------

05


SS 返回指定时间的秒数(范围:0-59)

例如:

SQL> select to_char(sysdate,'ss') from dual;

TO_CHAR(SYSDATE,'SS')

---------------------

34


FF[1-9] 返回毫秒数,可指定长度1-9,默认6位

例如:

SQL> select to_char(systimestamp,'ff4') from dual;


TO_CHAR(S

---------

6710


Y,YYY 返回有逗号分隔显示的年

例如:

SQL> select to_char(sysdate,'y,yyy') from dual;

TO_CHAR(SYSDATE,'Y,YYY')

------------------------

2,007


I/IY/IYY/IYYY 返回ISO标准年

例如:

SQL> select to_char(to_date('187-4-3','yyyy-mm-dd'),'IYYY') from dual;

TO_CHAR(TO_DATE('187-4-3','YYY

------------------------------

0187


Y/YY/YYY 以指定长度返回日期的年份

例如:

SQL> select to_char(sysdate,'yy') from dual;

TO_CHAR(SYSDATE,'YY')

---------------------

07


W 返回指定日期在当月中的第X周(范围:1-5)

例如:

SQL> select to_char(to_date('2007-6-18','yyyy-mm-dd'),'w') from dual;

TO_CHAR(TO_DATE('2007-6-18','Y

------------------------------

3


WW 返回指定日期在当年中的第X周(范围:1-53)

例如:

SQL> select to_char(to_date('2007-6-18','yyyy-mm-dd'),'ww') from dual;

TO_CHAR(TO_DATE('2007-6-18','Y

------------------------------

25


IW 指定日期在当年中第X周(范围:1-52或1-53(润年))

例如:

SQL> select to_char(sysdate,'IW') from dual;

TO_CHAR(SYSDATE,'IW')

---------------------

50


RM 以罗马数字形式返回月份(范围I-XII)

例如:

SQL> select to_char(to_date('2007-11-3','yyyy-mm-dd'),'RM') from dual;

TO_CHAR(TO_DATE('2007-11-3','Y

------------------------------

XI


Q 返回指定日期的季度(范围:1-4)

例如:

SQL> select to_char(to_date('2007-2-3','yyyy-mm-dd'),'q') from dual;

TO_CHAR(TO_DATE('2007-2-3','YY

------------------------------

1


J 自公元前4712年1月1日到指定日期的总天数

例如:

SQL> select to_char(sysdate,'J') from dual;

TO_CHAR(SYSDATE,'J')

--------------------

2454449


SSSSS 返回自午夜到指定时间共逝去的秒数(范围:0-86399)

例如:

SQL> select to_char(sysdate,'sssss') from dual;

TO_CHAR(SYSDATE,'SSSSS')

------------------------

55141


阅读(671) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~