網頁

2011年8月15日 星期一

Oracle與日期有關的常用函數

Oracle 用來取得目前系統時間的函數為sysdate
EX:
SQL> SELECT sysdate FROM dual;
SYSDATE
---------
15-AUG-11

*更改目前session日期顯示格式
SQL> ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD';
Session altered.

SQL> SELECT sysdate FROM dual;
SYSDATE
----------
2011-08-15


常用的日期格式:
1. YYYY/MM/DD
YYYY 年(4位)
MM 月份(2位)
DD 日期(2位)

SQL> SELECT TO_CHAR(sysdate, 'YYYY/MM/DD') FROM dual;
TO_CHAR(SY
----------
2011/08/15

2. 取得星期幾
Sunday=1, Monday=2, ...

SQL> SELECT TO_CHAR(sysdate, 'D') FROM dual;
T
-
2

SQL> SELECT TO_CHAR( TO_DATE('2011/08/14'), 'D') FROM dual;
T
-
1

3. DDD 一年的第幾天
SQL> SELECT TO_CHAR(sysdate, 'DDD') FROM dual;
TO_
---
227

4. WW 一年的第幾週
SQL> SELECT TO_CHAR(sysdate, 'WW') FROM dual;
TO
--
33

5. W 一月的第幾週
SQL> SELECT TO_CHAR(sysdate, 'W') FROM dual;
T
-
3

6. YYYY/MM/DD HH24:MI:SS AM
YYYY 年
MM 月份
DD 日期
HH24/HH HH24表採24小時制
MI 分鐘
SS 秒數
AM/PM 顯示上/下午

SQL> SELECT TO_CHAR(sysdate, 'YYYY/MM/DD HH24:MI:SS AM') FROM dual;
TO_CHAR(SYSDATE,'YYYY/
----------------------
2011/08/15 11:48:43 AM

SQL> SELECT TO_CHAR(sysdate, 'YYYY/MM/DD HH24:MI:SS PM') FROM dual;
TO_CHAR(SYSDATE,'YYYY/
----------------------
2011/08/15 11:49:03 AM

7. J 顯示Juilan Day, BC 4712/01/01為1
SQL> SELECT TO_CHAR(sysdate, 'J') FROM dual;
TO_CHAR
-------
2455789

SQL> SELECT TO_CHAR(TO_DATE('2011/08/14'),'J') FROM dual;
TO_CHAR
-------
2455788

8. RR/MM/DD
公元 2000 問題
00-49 表下世紀
50-99 表本世紀
SQL> SELECT to_DATE('99/12/31','RR/MM/DD') FROM dual;
TO_DATE('9
----------
1999-12-31

SQL> SELECT TO_DATE('02/02/02','RR/MM/DD') FROM dual;
TO_DATE('0
----------
2002-02-02

SQL> SELECT TO_DATE('49/12/31','RR/MM/DD') FROM dual;
TO_DATE('4
----------
2049-12-31

SQL> SELECT TO_DATE('50/01/01','RR/MM/DD') FROM dual;
TO_DATE('5
----------
1950-01-01

沒有留言:

張貼留言