2013/08/26

09-03.Sing-Row Functions【日付関数(Datetime Functions)】

■Datetime Functions(日付関数)
 -日付関数はNUMBERもしくはDATE型の値をRETURNする。

■SYSDATE
 -SYSDATE関数を使用すると現在日時(システム基準)を得られる
 -最小単位:1秒

SQL> SELECT TO_CHAR(SYSDATE, 'RRRR-MM-DD HH24:MI:SS') "現在時刻" FROM DUAL;

現在時刻
-------------------
2013-08-26 12:33:00

SQL> SELECT TO_CHAR(SYSDATE-1, 'RRRR-MM-DD HH24:MI:SS') "1日前現時刻" FROM DUAL;

1日前現時刻
-------------------
2013-08-25 12:34:08

SQL> SELECT TO_CHAR(SYSDATE-1/24, 'RRRR-MM-DD HH24:MI:SS') "1時間前" FROM DUAL;

1時間前
-------------------
2013-08-26 11:35:41

SQL> SELECT TO_CHAR(SYSDATE-1/24/60, 'RRRR-MM-DD HH24:MI:SS') "1分前" FROM DUAL;

1分前
-------------------
2013-08-26 12:36:04

SQL> SELECT TO_CHAR(SYSDATE-1/24/60/10, 'RRRR-MM-DD HH24:MI:SS') "6秒前" FROM DUAL;

6秒前
-------------------
2013-08-26 12:38:22

SQL>
SQL> SELECT TO_CHAR(SYSDATE-(5/24 + 30/24/60 + 10/24/60/60),'RRRR-MM-DD HH24:MI:SS') "5時間30分10秒前" FROM DUAL;

5時間30分10秒前
-------------------
2013-08-26 07:09:55

SQL>


■SYSTIMESTAMP
 -SYSTIMESTAMP関数を使用すると現在の日時を得られる
 -最小単位=10億分の1秒

SQL> SELECT TO_CHAR(SYSTIMESTAMP, 'RRRR-MM-DD HH24:MI:SS.FF3') "現在時刻" FROM DUAL;

現在時刻
-----------------------------
2013-08-26 13:47:24.033

SQL> SELECT TO_CHAR(SYSTIMESTAMP, 'RRRR-MM-DD HH24:MI:SS.FF9') "現在時刻" FROM DUAL;

現在時刻
-----------------------------
2013-08-26 13:47:42.649000000

SQL> SELECT TO_CHAR(SYSTIMESTAMP -1/24, 'RRRR-MM-DD HH24:MI:SS') "1時間前" FROM DUAL;

1時間前
-------------------
2013-08-26 12:49:12

SQL> SELECT TO_CHAR(SYSTIMESTAMP -1/24/60, 'RRRR-MM-DD HH24:MI:SS') "1分前" FROM DUAL;

1分前
-------------------
2013-08-26 13:51:05



■ADD_MONTHS(a, b)
 -ADD_MONTHS関数はaの日付にbの月を足した値を返す。

--SYSDATE使用例
SQL> SELECT TO_CHAR(ADD_MONTHS(SYSDATE,3), 'RRRR-MM-DD') "date" FROM DUAL;

date
----------
2013-11-26


--TIMESTAMP使用例
SQL> SELECT TO_CHAR(ADD_MONTHS(SYSTIMESTAMP,3), 'RRRR-MM-DD') "date" FROM DUAL;

date
----------
2013-11-26



■MONTHS_BETWEEN(a1, a2)
 -a1とa2の間の月の数をNUMBERタイプで返す

SQL> SELECT MONTHS_BETWEEN(TO_DATE('2013-08-25', 'RRRR-MM-DD') ,
  2                        TO_DATE('2013-07-01', 'RRRR-MM-DD')) "Month"
  3  FROM DUAL;

     Month
----------
1.77419355



■LAST_DAY(d)
 -その月の最終日を返す

SQL> SELECT SYSDATE today, LAST_DAY(SYSDATE) lastday FROM DUAL;

TODAY    LASTDAY
-------- --------
13-08-26 13-08-31



■NEXT_DAY(d, c1)
 -入力しは曜日に対して今度該当の日付を返す
 -曜日は1(日)~7(土)を入力

SQL> SELECT SYSDATE today, LAST_DAY(SYSDATE) lastday FROM DUAL;

TODAY    LASTDAY
-------- --------
13-08-26 13-08-31




SQL> SELECT NEXT_DAY(TO_DATE('20130826', 'RRRRMMDD'), 3) "8月最終火曜日" FROM DUAL;

8月最終
--------
13-08-27



■ROUND(d[,F])
 -Fに指定された単位に四捨五入する。
 -Fが年度なら年度で四捨五入、Fが省略されると日が一番近い日に四捨五入される。

SQL> SELECT TO_CHAR(ROUND(TO_DATE('2013-08-26 15:00:01' ,
  2                               'RRRR-MM-DD HH24:MI:SS'), 'YEAR'),
  3                 'RRRR-MM-DD HH24:MI:SS')
  4  FROM DUAL;

TO_CHAR(ROUND(TO_DA
-------------------
2014-01-01 00:00:00

SQL> SELECT TO_CHAR(ROUND(TO_DATE('2013-08-26 15:00:01',
  2                               'RRRR-MM-DD HH24:MI:SS'), 'MONTH'),
  3                 'RRRR-MM-DD HH24:MI:SS')
  4  FROM DUAL;

TO_CHAR(ROUND(TO_DA
-------------------
2013-09-01 00:00:00

SQL> SELECT TO_CHAR(ROUND(TO_DATE('2013-08-26 15:00:01',
  2                               'RRRR-MM-DD HH24:MI:SS'), 'DD'),
  3                 'RRRR-MM-DD HH24:MI:SS')
  4  FROM DUAL;

TO_CHAR(ROUND(TO_DA
-------------------
2013-08-27 00:00:00

SQL> SELECT TO_CHAR(ROUND(TO_DATE('2013-08-26 15:00:01',
  2                               'RRRR-MM-DD HH24:MI:SS')),
  3                 'RRRR-MM-DD HH24:MI:SS')
  4  FROM DUAL;

TO_CHAR(ROUND(TO_DA
-------------------
2013-08-27 00:00:00



■TRUNC(d[,F])
 -Fに指定した単位で切り捨てを行なう
SQL> SELECT TO_CHAR(TRUNC(TO_DATE('2013-08-26 15:00:01' ,
  2                               'RRRR-MM-DD HH24:MI:SS'), 'YEAR'),
  3                 'RRRR-MM-DD HH24:MI:SS')
  4  FROM DUAL;

TO_CHAR(TRUNC(TO_DA
-------------------
2013-01-01 00:00:00

SQL> SELECT TO_CHAR(TRUNC(TO_DATE('2013-08-26 15:00:01' ,
  2                               'RRRR-MM-DD HH24:MI:SS'), 'MONTH'),
  3                 'RRRR-MM-DD HH24:MI:SS')
  4  FROM DUAL;

TO_CHAR(TRUNC(TO_DA
-------------------
2013-08-01 00:00:00

SQL> SELECT TO_CHAR(TRUNC(TO_DATE('2013-08-26 15:00:01' ,
  2                               'RRRR-MM-DD HH24:MI:SS'), 'DD'),
  3                 'RRRR-MM-DD HH24:MI:SS')
  4  FROM DUAL;

TO_CHAR(TRUNC(TO_DA
-------------------
2013-08-26 00:00:00

SQL> SELECT TO_CHAR(TRUNC(TO_DATE('2013-08-26 15:00:01' ,
  2                               'RRRR-MM-DD HH24:MI:SS')),
  3                 'RRRR-MM-DD HH24:MI:SS')
  4  FROM DUAL;

TO_CHAR(TRUNC(TO_DA
-------------------
2013-08-26 00:00:00

0 件のコメント:

コメントを投稿

QLOOKアクセス解析