MySQLの日時関数と間隔関数で使用できる単位のリストは次のとおりです。
unit 価値 | 予想されるexpr フォーマット |
---|---|
MICROSECOND | MICROSECONDS |
SECOND | SECONDS |
MINUTE | MINUTES |
HOUR | HOURS |
DAY | DAYS |
WEEK | WEEKS |
MONTH | MONTHS |
QUARTER | QUARTERS |
YEAR | YEARS |
SECOND_MICROSECOND | 'SECONDS.MICROSECONDS' |
MINUTE_MICROSECOND | 'MINUTES:SECONDS.MICROSECONDS' |
MINUTE_SECOND | 'MINUTES:SECONDS' |
HOUR_MICROSECOND | 'HOURS:MINUTES:SECONDS.MICROSECONDS' |
HOUR_SECOND | 'HOURS:MINUTES:SECONDS' |
HOUR_MINUTE | 'HOURS:MINUTES' |
DAY_MICROSECOND | 'DAYS HOURS:MINUTES:SECONDS.MICROSECONDS' |
DAY_SECOND | 'DAYS HOURS:MINUTES:SECONDS' |
DAY_MINUTE | 'DAYS HOURS:MINUTES' |
DAY_HOUR | 'DAYS HOURS' |
YEAR_MONTH | 'YEARS-MONTHS' |
これらのユニットは、+
で使用できます および-
ADDDATE()
などの関数を使用して、日付の算術演算を実行する場合の演算子 、SUBDATE()
、DATE_ADD()
、DATE_SUB()
、およびEXTRACT()
。
ON SCHEDULE
でも使用できます CREATE_EVENT()
の句 およびALTER_EVENT()
機能。
最初の9つのユニットは、TIMESTAMPADD()
で使用できます。 およびTIMESTAMPDIFF()
(これらの2つの関数は、執筆時点では複合ユニットをサポートしていません。)
アンダースコアを含む単位は複合単位です。これらは、複数の基本時間単位で構成されています。これらは、一度に複数のユニットを指定するための簡単な方法と考えることができます。各ユニットは、任意の句読文字で区切ることができます。
例
日時式に年を追加する例を次に示します。
SELECT '2035-01-01 01:30:45' + INTERVAL 1 YEAR;
結果:
2036-01-01 01:30:45
この場合、+
を使用します 追加を実行する演算子。
日時関数
日付と時刻の単位は、さまざまな日付関数で使用できます。
これがDATE_ADD()
です。 機能:
SELECT DATE_ADD('2035-01-01 01:30:45', INTERVAL 1 YEAR);
結果:
2036-01-01 01:30:45
複合ユニット
複合ユニットを使用する例を次に示します。
SELECT
DATE_ADD('2035-01-01 01:00:00', INTERVAL '1:2' YEAR_MONTH) AS "YEAR_MONTH",
DATE_ADD('2035-01-01 01:00:00', INTERVAL '1:25:35' HOUR_SECOND) AS "HOUR_SECOND",
DATE_ADD('2035-01-01 01:00:00', INTERVAL '1:30:25' DAY_MINUTE) AS "DAY_MINUTE";
結果:
+---------------------+---------------------+---------------------+ | YEAR_MONTH | HOUR_SECOND | DAY_MINUTE | +---------------------+---------------------+---------------------+ | 2036-03-01 01:00:00 | 2035-01-01 02:25:35 | 2035-01-03 07:25:00 | +---------------------+---------------------+---------------------+
整数は、任意の句読文字で区切ることができます。したがって、コロンをピリオドに置き換えて、同じ結果を得ることができます。
SELECT
DATE_ADD('2035-01-01 01:00:00', INTERVAL '1.2' YEAR_MONTH) AS "YEAR_MONTH",
DATE_ADD('2035-01-01 01:00:00', INTERVAL '1.25.35' HOUR_SECOND) AS "HOUR_SECOND",
DATE_ADD('2035-01-01 01:00:00', INTERVAL '1.30.25' DAY_MINUTE) AS "DAY_MINUTE";
結果:
+---------------------+---------------------+---------------------+ | YEAR_MONTH | HOUR_SECOND | DAY_MINUTE | +---------------------+---------------------+---------------------+ | 2036-03-01 01:00:00 | 2035-01-01 02:25:35 | 2035-01-03 07:25:00 | +---------------------+---------------------+---------------------+