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_ID | SALE | RATE | POINT |
---|---|---|---|
900101 | 12000 | 10.00 | 1200 |
900102 | 13000 | 10.00 | 1300 |
900103 | 5000 | 10.00 | 500 |
900104 | 5430 | 10.00 | 543 |
900105 | 5500 | 10.00 | 550 |
C_ID | SALE - POINT |
---|---|
900101 | 10800 |
900102 | 11700 |
900103 | 4500 |
900104 | 4887 |
900105 | 4950 |
SQL実行例の説明(2)
・T1_SAMPLE表の日付データUPDATE_TIMEをENTRY_DATEで減算したデータを取得します。
-- Oracle/ PostgreSQL/
SELECT C_ID, UPDATE_TIME - ENTRY_DATE AS DIFF_DATE FROM T1_SAMPLE;
SQL実行の結果(2-1)
C_ID | ENTRY_DATE | UPDATE_TIME |
---|---|---|
900101 | 06-06-01 | 06-06-14 |
900102 | 06-06-02 | 06-06-14 |
900103 | 06-06-01 | 06-06-14 |
900104 | 06-06-07 | 06-06-14 |
900105 | 06-06-05 | 06-06-14 |
C_ID | DIFF_DATE |
---|---|
900101 | 13 |
900102 | 12 |
900103 | 13 |
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_DATE | CURRENT_DATE - 10 |
---|---|
06-06-14 | 06-06-04 |
SQL Server
GETDATE() | GETDATE() - 10 |
---|---|
2006-06-14 10:11:50.500 | 2006-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 |