MariaDBには、日付と時刻の値を操作するときに使用できる一連の日付と時刻の単位が含まれています。例:MONTH は単位であり、HOUR 別のユニットです。
一部のユニットは複合ユニットです。複合ユニットとは、2つのユニットが1つに結合される場合です。命名規則では、各ユニット名はアンダースコアで区切られています。例:MINUTE_SECOND 分と秒です。
以下は、MariaDBで複合ユニットがどのように機能するかを示すいくつかの例です。
複合ユニットのリスト
まず、MariaDBで利用可能な複合ユニットのリストを次に示します。
| ユニット | 説明 |
|---|---|
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 | 日時間。分。秒。マイクロ秒 |
DAY_SECOND | 日時間。分。秒 |
DAY_MINUTE | 日時間。分 |
DAY_HOUR | 日数 |
YEAR_MONTH | 年-月 |
彼らの名前を見るだけで、彼らが何をしているのかについてかなり良い手がかりが得られます。
複合単位(他の日付/時刻単位と同様)は、日付/時刻値の一部を抽出する場合や、日付/時刻値に時間間隔を加算および減算する場合などに使用できます。
これらは+で使用できます および- ADDDATE()などの関数を使用して、日付の算術演算を実行する場合の演算子 、SUBDATE() 、DATE_ADD() 、DATE_SUB() 、EXTRACT() 、TIMESTAMPADD() 、およびTIMESTAMPDIFF() 。
ON SCHEDULEでも使用できます CREATE_EVENT()の句 およびALTER_EVENT() 機能。
例–複合ユニットの抽出
日付と時刻の単位は、さまざまな機能やその他のさまざまなコンテキストで使用できます。これらのユニットを受け入れる関数の1つは、EXTRACT()です。 働き。この関数は、指定された日付または日時の値から指定された日付/時刻の単位を返します。
複合ユニットを使用して日付から年と月を抽出する例を次に示します。
SELECT EXTRACT(YEAR_MONTH FROM '2030-12-25'); 結果:
+---------------------------------------+ | EXTRACT(YEAR_MONTH FROM '2030-12-25') | +---------------------------------------+ | 203012 | +---------------------------------------+
年と月が1つの値として返されることがわかります。
例–複合ユニットの加算/減算
複合ユニットを使用して、日付と時刻の間隔を加算および減算することもできます。
例:
SELECT '2030-12-25' + INTERVAL '2:08' DAY_HOUR; 結果:
+-----------------------------------------+ | '2030-12-25' + INTERVAL '2:08' DAY_HOUR | +-----------------------------------------+ | 2030-12-27 08:00:00 | +-----------------------------------------+
この場合、複合ユニットに関して注意すべき2つの部分があります。
前の例と同様に、複合ユニット(この場合はDAY_HOUR)を使用しました )。追加する実際の間隔に関しては、複合ユニットの各側を区切るためにコロンを使用しました。
この場合、'2:08'を指定しました 、日付の値に2日と8時間を追加しました。元の日付には時間部分がないため、最初の時刻は00:00:00であると想定されます。 。
MariaDBは、フォーマットの厳密さを合理的に許容しています。異なる区切り文字を使用し、先行ゼロを省略することでも、同じ効果を得ることができます。
DATE_ADD()を使用する別の例を次に示します。 さまざまな時間間隔で機能する:
SELECT DATE_ADD('2030-12-25', INTERVAL '2!8' DAY_HOUR); 結果:
+-------------------------------------------------+
| DATE_ADD('2030-12-25', INTERVAL '2!8' DAY_HOUR) |
+-------------------------------------------------+
| 2030-12-27 08:00:00 |
+-------------------------------------------------+ さまざまな複合ユニットの例をさらにいくつか示します。
SELECT
DATE_ADD('2021-05-01 10:00:00', INTERVAL '1:2' YEAR_MONTH) AS "YEAR_MONTH",
DATE_ADD('2021-05-01 10:00:00', INTERVAL '1:25:35' HOUR_SECOND) AS "HOUR_SECOND",
DATE_ADD('2021-05-01 10:00:00', INTERVAL '1:30' DAY_MINUTE) AS "DAY_MINUTE"; 結果:
+---------------------+---------------------+---------------------+ | YEAR_MONTH | HOUR_SECOND | DAY_MINUTE | +---------------------+---------------------+---------------------+ | 2022-07-01 10:00:00 | 2021-05-01 11:25:35 | 2021-05-01 11:30:00 | +---------------------+---------------------+---------------------+