SQL初心者でもわかる!MySQLで今日の日付のデータを取得する方法とサンプルコード
MySQLで現在の日付のタイムスタンプを持つ行を選択する方法
このチュートリアルでは、MySQLを使用して現在の日付のタイムスタンプを持つ行を選択する方法を説明します。2つの方法をご紹介します。
CURRENT_TIMESTAMP
関数を使用するDATE()
関数と比較演算子を使用する
CURRENT_TIMESTAMP
関数は、現在の時刻をタイムスタンプとして返します。この関数を使用して、現在の日付のタイムスタンプを持つ行を選択できます。
SELECT * FROM your_table
WHERE your_timestamp_column = CURRENT_TIMESTAMP;
このクエリは、your_table
テーブル内の your_timestamp_column
列が CURRENT_TIMESTAMP
関数によって返される値と一致するすべての行を選択します。
例
次のクエリは、employees
テーブル内の hire_date
列が現在の日付と一致するすべての従業員を選択します。
SELECT * FROM employees
WHERE hire_date = CURRENT_TIMESTAMP;
DATE()
関数は、時刻値から日付部分のみを抽出します。この関数と比較演算子を使用して、現在の日付のタイムスタンプを持つ行を選択できます。
SELECT * FROM your_table
WHERE DATE(your_timestamp_column) = DATE(CURRENT_TIMESTAMP);
SELECT * FROM orders
WHERE DATE(order_date) = DATE(CURRENT_TIMESTAMP);
- 上記のクエリは、
your_timestamp_column
列が DATETIME または TIMESTAMP データ型であることを前提としています。 - 他のデータ型の場合は、適切な変換関数を使用する必要があります。
- 例えば、
your_timestamp_column
列が VARCHAR データ型の場合は、次のように変換する必要があります。
SELECT * FROM your_table
WHERE DATE(STR_TO_DATE(your_timestamp_column, '%Y-%m-%d')) = DATE(CURRENT_TIMESTAMP);
CREATE TABLE employees (
employee_id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(255) NOT NULL,
hire_date DATETIME NOT NULL
);
INSERT INTO employees (name, hire_date)
VALUES
('John Doe', '2024-07-08'),
('Jane Doe', '2023-01-01'),
('Peter Jones', '2022-06-15');
SELECT * FROM employees
WHERE hire_date = CURRENT_TIMESTAMP;
このコードは、次の結果を返します。
employee_id | name | hire_date
------------+------------+------------
1 | John Doe | 2024-07-08
CREATE TABLE orders (
order_id INT PRIMARY KEY AUTO_INCREMENT,
customer_id INT NOT NULL,
order_date DATETIME NOT NULL
);
INSERT INTO orders (customer_id, order_date)
VALUES
(1, '2024-07-08'),
(2, '2024-07-07'),
(3, '2024-07-06');
SELECT * FROM orders
WHERE DATE(order_date) = DATE(CURRENT_TIMESTAMP);
order_id | customer_id | order_date
------------+------------+------------
1 | 1 | 2024-07-08
説明
- 上記のコードは、2つのテーブル (
employees
とorders
) を作成し、サンプルデータを挿入します。 - 次に、
CURRENT_TIMESTAMP
関数とDATE()
関数を使用して、現在の日付のタイムスタンプを持つ行を選択するクエリを実行します。 - 結果は、各クエリに対応する表に示されています。
- このコードは、MySQL 8.0 で動作することを確認しています。
- 他のバージョンの MySQL を使用している場合は、構文が多少異なる場合があります。
SELECT * FROM your_table
WHERE your_timestamp_column = NOW();
UNIX_TIMESTAMP() 関数と比較演算子を使用する
UNIX_TIMESTAMP()
関数は、時刻値を UNIX タイムスタンプに変換します。UNIX タイムスタンプは、1970 年 1 月 1 日 00:00:00 UTC からの経過秒数です。この関数と比較演算子を使用して、現在の日付のタイムスタンプを持つ行を選択できます。
SELECT * FROM your_table
WHERE UNIX_TIMESTAMP(your_timestamp_column) >= UNIX_TIMESTAMP(CURRENT_TIMESTAMP);
BETWEEN キーワードを使用する
BETWEEN
キーワードを使用して、範囲内の値を持つ行を選択できます。このキーワードを使用して、現在の日付のタイムスタンプを持つ行を選択できます。
SELECT * FROM your_table
WHERE your_timestamp_column BETWEEN CURRENT_TIMESTAMP AND CURRENT_TIMESTAMP + INTERVAL 1 DAY;
このクエリは、your_table
テーブル内の your_timestamp_column
列の値が CURRENT_TIMESTAMP
関数によって返される値と CURRENT_TIMESTAMP
関数によって返される値に 1 日を足した値の間にあるすべての行を選択します。
SUBSTRING_INDEX() 関数と比較演算子を使用する
SUBSTRING_INDEX()
関数は、文字列から指定された区切り文字で区切られた部分文字列を抽出します。この関数と比較演算子を使用して、現在の日付のタイムスタンプを持つ行を選択できます。
SELECT * FROM your_table
WHERE SUBSTRING_INDEX(your_timestamp_column, '-', 1) = DATE(CURRENT_TIMESTAMP);
上記以外にも、MySQLで現在の日付のタイムスタンプを持つ行を選択する方法はいくつかあります。使用する方法は、個々の状況や好みにより異なります。
SELECT * FROM your_table
WHERE SUBSTRING_INDEX(STR_TO_DATE(your_timestamp_column, '%Y-%m-%d'), '-', 1) = DATE(CURRENT_TIMESTAMP);
mysql sql timestamp