【初心者向け】MariaDBのDATE関数:基本から応用まで分かりやすく解説
DATE関数
DATE関数は、文字列または日付/時刻値を引数として受け取り、YYYY-MM-DD形式の日付値を返します。
構文
DATE(expr)
引数
expr
: 文字列または日付/時刻値
戻り値
- YYYY-MM-DD形式の日付値
例
SELECT DATE('2024-07-14');
-- 結果: 2024-07-14
SELECT DATE(CURRENT_TIMESTAMP);
-- 結果: 2024-07-14
MariaDBには、DATE関数以外にも様々な便利な日付操作関数があります。以下に、代表的な関数をいくつか紹介します。
- DATE_SUB関数
指定された日付/時刻値から期間を減算します。 - DATE_ADD関数
指定された日付/時刻値に期間を加算します。 - STR_TO_DATE関数
文字列を日付/時刻値に変換します。 - DATE_FORMAT関数
日付/時刻値を指定された書式に変換します。 - NOW()関数
現在の日付と時刻をYYYY-MM-DD HH:MM:SS形式で返します。 - CURRENT_DATE関数
CURDATE関数と同じです。 - CURDATE関数
現在の日付をYYYY-MM-DD形式で返します。
DATE関数と組み合わせて使用できる関数
DATE関数は、他の関数と組み合わせて使用することで、より複雑な日付操作を実行することができます。以下に、いくつかの例を紹介します。
- DATE_FORMAT関数と組み合わせて、日付を特定の書式に変換する
SELECT DATE_FORMAT(DATE('2024-07-14'), '%Y-%m-%d %H:%i:%S');
-- 結果: 2024-07-14 00:00:00
- STR_TO_DATE関数と組み合わせて、文字列を日付に変換してからDATE関数で処理する
SELECT DATE(STR_TO_DATE('14 July 2024', '%d %M %Y'));
-- 結果: 2024-07-14
- DATE_ADD関数と組み合わせて、特定の期間後の日付を取得する
SELECT DATE_ADD(DATE('2024-07-14'), INTERVAL 30 DAY);
-- 結果: 2024-08-13
様々な形式の日付文字列を処理する
以下の例では、様々な形式の日付文字列をDATE関数を使用してYYYY-MM-DD形式に変換する方法を示します。
SELECT DATE('2024-07-14') AS 'ISO format';
SELECT DATE('14/07/2024') AS 'DD/MM/YYYY format';
SELECT DATE('July 14, 2024') AS 'Month DD, YYYY format';
DATE_FORMAT関数を使用して日付をフォーマットする
以下の例では、DATE_FORMAT関数を使用して、DATE関数で取得した日付を様々な形式にフォーマットする方法を示します。
SELECT DATE('2024-07-14'),
DATE_FORMAT(DATE('2024-07-14'), '%Y-%m-%d') AS 'ISO format',
DATE_FORMAT(DATE('2024-07-14'), '%d/%m/%Y') AS 'DD/MM/YYYY format',
DATE_FORMAT(DATE('2024-07-14'), '%b %d, %Y') AS 'Month DD, YYYY format';
STR_TO_DATE関数を使用して文字列を日付に変換してからDATE関数で処理する
以下の例では、STR_TO_DATE関数を使用して文字列を日付に変換してから、DATE関数を使用して曜日を取得する方法を示します。
SELECT DAYOFWEEK(STR_TO_DATE('14 July 2024', '%d %M %Y'));
-- 結果: 1 (日曜日)
DATE_ADD関数と組み合わせて特定の期間後の日付を取得する
以下の例では、DATE_ADD関数を使用して、現在の日付から30日後の日付を取得する方法を示します。
SELECT DATE_ADD(CURRENT_DATE, INTERVAL 30 DAY);
DATE関数と組み合わせて、誕生日を基に年齢を計算する
以下の例では、DATE関数と組み合わせて、誕生日を基に年齢を計算する方法を示します。
SELECT
YEAR(CURRENT_DATE) - YEAR(birthdate) AS 'age',
DATE_FORMAT(birthdate, '%Y-%m-%d') AS 'birthdate'
FROM customers;
文字列リテラル
最も簡単な代替方法は、文字列リテラルとして日付を直接指定する方法です。この方法は、比較的小規模なデータセットや、日付の書式が常に一定している場合に適しています。
SELECT * FROM customers WHERE birthdate = '2024-07-14';
CAST関数
文字列を日付に変換するには、CAST関数を使用することができます。この方法は、書式が一定でない日付文字列を処理する場合に役立ちます。
SELECT * FROM customers WHERE birthdate = CAST('14 July 2024' AS DATE);
STR_TO_DATE関数
より複雑な日付文字列の処理には、STR_TO_DATE関数を使用することができます。この関数は、書式化された文字列をDATE型に変換するだけでなく、様々な書式オプションを提供します。
SELECT * FROM customers
WHERE birthdate = STR_TO_DATE(birthdate_str, '%d %M %Y');
EXTRACT関数
日付情報の一部のみを抽出したい場合は、EXTRACT関数を使用することができます。この関数は、年、月、日、曜日など、特定の日付コンポーネントを抽出することができます。
SELECT
YEAR(birthdate) AS 'year',
MONTH(birthdate) AS 'month',
DAY(birthdate) AS 'day'
FROM customers;
DATEDIFF関数
2つの日付間の差を計算するには、DATEDIFF関数を使用することができます。この関数は、日数、週数、月数、年数などの単位で差を返すことができます。
SELECT DATEDIFF(YEAR, '2020-01-01', CURRENT_DATE);
-- 結果: 4
NOW()関数
現在の日付と時刻を取得するには、NOW()関数を使用することができます。この関数は、様々な形式で現在の日付と時刻を返すことができます。
SELECT NOW();
-- 結果: 2024-07-14 00:00:00
CURDATE関数
現在の日付のみを取得するには、CURDATE関数を使用することができます。この関数は、YYYY-MM-DD形式で現在の日付を返します。
SELECT CURDATE();
-- 結果: 2024-07-14
上記以外にも、MariaDBには様々な日付操作関数があります。詳細は、MariaDB公式ドキュメントを参照してください。