SQL-92/99 Oracle Db2 SQL Server MySQL PostgreSQL Access

数値式1 - 数値式2


Oracle/ PostgreSQL/

日付式1 - 日付式2


Oracle/ SQL Server/ MySQL/ PostgreSQL/

日付式 - 数値式

-(演算子)は数値データを引き算するときに使用します。

Oracle/ PostgreSQLでは日付データを引き算、Oracle/ SQL Server/ MySQL/ PostgreSQLでは日付データと数値データを引き算することができます。


月単位の計算を行う場合、OracleではADD_MONTHS、SQL ServerではDATEADDを使用します。


関連キーワード

DATEADD






SQL実行例の説明(1)

・T1_SAMPLE表のSALEからPOINTを減算したデータを取得します。


SELECT C_ID, SALE - POINT FROM T1_SAMPLE;

SQL実行の結果(1-1)

C_IDSALERATEPOINT
9001011200010.001200
9001021300010.001300
900103 500010.00 500
900104 543010.00 543
900105 550010.00 550
SQL Result
C_IDSALE - POINT
90010110800
90010211700
900103 4500
900104 4887
900105 4950



SQL実行例の説明(2)

・T1_SAMPLE表の日付データUPDATE_TIMEENTRY_DATEで減算したデータを取得します。


-- Oracle/ PostgreSQL/
SELECT C_ID, UPDATE_TIME - ENTRY_DATE AS DIFF_DATE FROM T1_SAMPLE;

SQL実行の結果(2-1)

C_IDENTRY_DATEUPDATE_TIME
90010106-06-0106-06-14
90010206-06-0206-06-14
90010306-06-0106-06-14
90010406-06-0706-06-14
90010506-06-0506-06-14
SQL Result
C_IDDIFF_DATE
90010113
90010212
90010313
900104 7
900105 9



SQL実行例の説明(3)

・システム日付から10日を減算した日付データを取得します。

・数値データは日数として扱われるため月単位の引き算を行う場合には月の日数を計算する必要があります。


-- Oracle/
SELECT CURRENT_DATE, CURRENT_DATE - 10 FROM DUAL;

-- SQL Server/
SELECT GETDATE(), GETDATE() - 10;

SQL実行の結果(3-1)

Oracle

CURRENT_DATECURRENT_DATE - 10
06-06-1406-06-04

SQL Server

GETDATE()GETDATE() - 10
2006-06-14 10:11:50.5002006-06-04 10:11:50.500



SQL実行例の説明(4)

・システム日付から1カ月を減算した日付データを取得します。

・数値データにはINTERVALの指定、さらに数値と日付タイプを指定する必要があります。

・なお、PostgreSQLでは日付データとして認識させるためDATEを使用するほか、数値と日付タイプは「'(シングルクォーテーション)」で括る必要があります。


-- MySQL/
SELECT '2006-06-01' - INTERVAL 1 MONTH AS PREV_1MONTH;

-- PostgreSQL/
SELECT DATE('2006-06-01') - INTERVAL '1 MONTH' AS PREV_1MONTH;

SQL実行の結果(4-1)

MySQL

PREV_1MONTH
2006-05-01

PostgreSQL

PREV_1MONTH
2006-05-01 00:00:00