经常遇到有朋友问询关于日期时间格式化的问题(或可以通过格式化轻易解决),经过参考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-14AD/A.D. 公元标识例如: SQL> select to_char(sysdate,¨AD YYYY-MM-DD¨) from dual;
TO_CHAR(SYSDATE,¨ADYYYY-MM-DD¨ ------------------------------ 公元 2007-12-14BC/B.C. 公元标识例如 SQL> select to_char(sysdate,¨BC YYYY-MM-DD¨) from dual;
TO_CHAR(SYSDATE,¨BCYYYY-MM-DD¨ ------------------------------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:58PM/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:23CC/SCC 世纪标识,S前缀指定如遇公元前的显示,会在显示前加(-)提示:
例如: 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 ------------------------------ 21D 指定日期在周中的数值(范围:1-7)例如: SQL> select to_char(to_date(¨2007-12-14¨,¨yyyy-mm-dd¨),¨D¨) from dual;
TO_CHAR(TO_DATE(¨2007-12-14¨,¨ ------------------------------ 6DD 指定日期在当月中的天数(范围:1-31)例如: SQL> select to_char(to_date(¨2007-12-14¨,¨yyyy-mm-dd¨),¨DD¨) from dual;
TO_CHAR(TO_DATE(¨2007-12-14¨,¨ ------------------------------ 14DDD 指定日期在当年中的天数(范围:1-366)例如: SQL> select to_char(to_date(¨2007-12-14¨,¨yyyy-mm-dd¨),¨DDD¨) from dual;
TO_CHAR(TO_DATE(¨2007-12-14¨,¨ ------------------------------ 348DAY 指定日期在周中的名称例如: 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 月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 sevenYYYY/SYYYY 返回数字型年,此处s前缀与SCC处相同例如: SQL> select to_char(sysdate,¨yyyy¨) from dual;
TO_CHAR(SYSDATE,¨YYYY¨) ----------------------- 2007MM 返回指定日期的月份(范围:1-12)例如: SQL> select to_char(sysdate,¨MM¨) from dual;
TO_CHAR(SYSDATE,¨MM¨) --------------------- 12HH 小时(范围:1-12)例如: SQL> select to_char(sysdate,¨am hh¨) from dual;
TO_CHAR(SYSDATE,¨AMHH¨) ----------------------- 下午 02HH12 小时(范围:1-12)例如: SQL> select to_char(sysdate,¨am hh12¨) from dual;
TO_CHAR(SYSDATE,¨AMHH12¨) ------------------------- 下午 02HH24 小时(范围:0-23)例如: SQL> select to_char(sysdate,¨am hh24¨) from dual;
TO_CHAR(SYSDATE,¨AMHH24¨) ------------------------- 下午 14MI 返回指定时间的分钟(范围0-59)例如: SQL> select to_char(sysdate,¨MI¨) from dual;
TO_CHAR(SYSDATE,¨MI¨) --------------------- 05SS 返回指定时间的秒数(范围:0-59)例如: SQL> select to_char(sysdate,¨ss¨) from dual;
TO_CHAR(SYSDATE,¨SS¨) --------------------- 34FF[1-9] 返回毫秒数,可指定长度1-9,默认6位例如: SQL> select to_char(systimestamp,¨ff4¨) from dual; TO_CHAR(S --------- 6710Y,YYY 返回有逗号分隔显示的年例如: SQL> select to_char(sysdate,¨y,yyy¨) from dual;
TO_CHAR(SYSDATE,¨Y,YYY¨) ------------------------ 2,007I/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 ------------------------------ 0187Y/YY/YYY 以指定长度返回日期的年份例如: SQL> select to_char(sysdate,¨yy¨) from dual;
TO_CHAR(SYSDATE,¨YY¨) --------------------- 07W 返回指定日期在当月中的第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 ------------------------------ 3WW 返回指定日期在当年中的第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 ------------------------------ 25IW 指定日期在当年中第X周(范围:1-52或1-53(润年))例如: SQL> select to_char(sysdate,¨IW¨) from dual;
TO_CHAR(SYSDATE,¨IW¨) --------------------- 50RM 以罗马数字形式返回月份(范围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 ------------------------------ XIQ 返回指定日期的季度(范围: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 ------------------------------ 1J 自公元前 4712 年1月1日到指定日期的总天数例如: SQL> select to_char(sysdate,¨J¨) from dual;
TO_CHAR(SYSDATE,¨J¨) -------------------- 2454449 |
|