SQLの基本:日付・時間操作入門: 基本的な関数と使い方
投稿日:
はじめに
SQLでは、日付や時間のデータを操作するための強力な関数が多数用意されています。これらの関数を使用することで、日付の計算やフォーマットの変更、特定の期間に基づいたデータの抽出などが簡単に行えます。今回は、SQLの日付・時間操作の基本的な使い方について解説します。
日付・時間の基本的な関数
CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP
これらの関数は、現在の日付、時間、およびタイムスタンプを取得します。
SELECT
CURRENT_DATE,
CURRENT_TIME,
CURRENT_TIMESTAMP;DATE_ADD
DATE_ADD関数は、指定した日付に特定の時間間隔を加算します。多くのデータベースで使用できますが、構文が異なることがあります。以下は、MySQLの例です。
DATE_ADD(date, interval)SELECT DATE_ADD('2024-01-01', INTERVAL 7 DAY) AS new_date;このクエリは、2024年1月1日に7日間を加算した日付を返します。
DATEDIFF
DATEDIFF関数は、2つの日付の間の差を計算します。こちらも、データベースごとに構文が異なることがあります。以下は、MySQLの例です。
DATEDIFF(end_date, start_date)SELECT DATEDIFF('2024-01-10', '2024-01-01') AS date_diff;このクエリは、2024年1月1日から2024年1月10日までの日数を返します。
DATE_FORMAT
DATE_FORMAT関数は、日付を指定した形式にフォーマットします。以下は、MySQLの例です。
DATE_FORMAT(date, format)SELECT DATE_FORMAT('2024-01-01', '%Y/%m/%d') AS formatted_date;このクエリは、2024年1月1日の日付を「2024/01/01」の形式にフォーマットして返します。
EXTRACT
EXTRACT関数は、日付や時間の特定の部分を抽出します。
EXTRACT(part FROM date)SELECT
EXTRACT(year FROM '2024-01-01') AS year,
EXTRACT(month FROM '2024-01-01') AS month,
EXTRACT(day FROM '2024-01-01') AS day;このクエリは、2024年1月1日の日付から年、月、日を抽出して返します。
日付の計算
日付の減算 (DATE_SUB)
DATE_SUB関数を使用して、日付から特定の期間を減算することができます。以下は、MySQLの例です。
SELECT DATE_SUB('2024-01-10', INTERVAL 7 DAY) AS new_date;このクエリは、2024年1月10日から7日を減算した日付を返します。
特定の期間のデータを抽出する
BETWEEN
BETWEEN演算子を使用して、特定の期間に属するデータを抽出する方法があります。
SELECT
*
FROM orders
WHERE order_date BETWEEN '2024-01-01' AND '2024-12-31';このクエリは、2024年1月1日から2024年12月31日までの間に注文された全ての注文を返します。
また、特定の月や年のデータを抽出するEXTRACT関数を使用して、特定の月や年のデータを抽出する方法があります。
SELECT
*
FROM orders
WHERE EXTRACT(month FROM order_date) = 1 AND
EXTRACT(year FROM order_date) = 2024;このクエリは、2024年1月に注文された全ての注文を返します。
日付フォーマットの変更
STR_TO_DATE
STR_TO_DATE関数は、文字列を日付に変換するために使用されます。以下は、MySQLの例です。
STR_TO_DATE(string, format)SELECT STR_TO_DATE('01-01-2024', '%d-%m-%Y') AS date;このクエリは、文字列「01-01-2024」(日-月-年形式)を日付に変換して返します。「2024-07-01」のようなYYYY-MM-DD形式の場合は、'%Y-%m-%d'を使用します。
よく使うフォーマット指定子
DATE_FORMATやSTR_TO_DATEで使用する主なフォーマット指定子をまとめます。
%Y - 4桁の年(例: 2024)
%m - 2桁の月(例: 01〜12)
%d - 2桁の日(例: 01〜31)
%H - 24時間制の時(例: 00〜23)
%i - 分(例: 00〜59)
%s - 秒(例: 00〜59)
まとめ
今回は、SQLの日付・時間操作の基本的な使い方について学びました。CURRENT_DATEで現在日付の取得、DATE_ADD/DATE_SUBで日付の加減算、DATEDIFFで日数計算、DATE_FORMATで表示形式の変更、EXTRACTで年月日の抽出ができます。レポート作成や期間指定のデータ抽出で頻繁に使うため、基本パターンを覚えておきましょう。
SQLマーケティングアカデミーで身につけたSQLスキル、実務でも使ってみませんか?
SheetFlowは、ExcelファイルをアップロードしてSQLで直接操作できるクラウドサービスです。学んだSELECT文やJOIN、集計関数をそのまま業務データに適用し、手作業の集計を自動化できます。
SheetFlowを無料で試す