MySQL タイムスタンプの日付を日付パラメーターのみと比較する

Mehvish Ashiq 2023年6月20日
  1. MySQL の DATE() vs. CAST() vs. CONVERT()
  2. MySQL タイムスタンプの日付を日付パラメーターのみと比較する
  3. DATE() を使用して、MySQL タイムスタンプの日付を日付パラメーターのみと比較する
  4. CAST() を使用して、MySQL タイムスタンプの日付を日付パラメーターのみと比較する
  5. CONVERT() を使用して、MySQL タイムスタンプの日付を日付パラメーターのみと比較する
  6. BETWEEN を使用して、MySQL タイムスタンプの日付を日付パラメーターのみと比較する
MySQL タイムスタンプの日付を日付パラメーターのみと比較する

今日は、DATE()CAST()、および CONVERT() 関数を使用して、MySQL タイムスタンプの日付を日付パラメーターのみと比較します。

MySQL の DATE() vs. CAST() vs. CONVERT()

以下、各機能の簡単な紹介です。 ここ をクリックすると、それぞれの例をさらに見つけることもできます。

MySQL の DATE() メソッド

DATE() メソッドは、タイムスタンプまたは DateTime 式から日付部分を抽出します。 パラメータは、DATETIMESTAMP、または DATETIME タイプでなければなりません。

渡された引数が上記の型以外に属する場合、NULL を返します。 この機能は、MySQL バージョン 4.0 以降を使用している場合に使用できます。

MySQL の CONVERT() メソッド

CONVERT() メソッドは、特定の値を指定されたデータ型に変換します。 たとえば、TIMESTAMP 型の値を DATE 型に変換できます。

2つのパラメーターが必要で、両方とも必須です。 最初のパラメーターは変換される値で、もう 1つは指定された値が変換されるデータ型です。

MySQL バージョン 4.0 以降で使用できます。

MySQL の CAST() メソッド

CAST() メソッドは、上で説明した CONVERT() に似ています。 これを使用して、あるデータ型の値を別のデータ型に変換します。

たとえば、DateTime の値を DATE 型に変換する場合。 CONVERT() メソッドと同様に、これも 2つの値を取ります: 変換する値と変換したいデータ型です。

MySQL バージョン 4.0 以降があれば、この関数を使用できます。

MySQL タイムスタンプの日付を日付パラメーターのみと比較する

MySQL タイムスタンプの日付を日付パラメーターのみと比較するには、IDCOL_DATETIME の 2つの属性を持つ date_comparison という名前のテーブルを作成します。 ここで、ID は int 型、COL_DATETIMETIMESTAMP です。

次のクエリを使用してこのテーブルを作成し、このチュートリアルに従うこともできます。

例:

# Create a table
CREATE TABLE date_comparison(
    ID INT NOT NULL AUTO_INCREMENT,
    COL_DATETIME TIMESTAMP NOT NULL,
    PRIMARY KEY (ID));

# Insert data
INSERT INTO date_comparison(col_datetime)
VALUES
('2001-11-15 09:50:00'),
('2006-08-09 04:30:00'),
('2001-11-15 23:30:00'),
('2005-06-03 06:22:11'),
('2004-01-01 21:42:17');

# Show all data
SELECT * FROM date_comparison;

出力:

+----+---------------------+
| ID | col_datetime        |
+----+---------------------+
|  1 | 2001-11-15 09:50:00 |
|  2 | 2006-08-09 04:30:00 |
|  3 | 2001-11-15 23:30:00 |
|  4 | 2005-06-03 06:22:11 |
|  5 | 2004-01-01 21:42:17 |
+----+---------------------+
5 rows in set (0.00 sec)

ここで、特定の日付のレコードを取得したいと考えています。 たとえば、日付 2005-06-03 のみ。 日付パラメーターを、TIMESTAMP 型のすべての col_datetime 列の値と比較する必要があります。

DATE() を使用して、MySQL タイムスタンプの日付を日付パラメーターのみと比較する

したがって、次のようにのみ、タイムスタンプの日付と日付パラメーターを比較できます。

例:

SELECT * FROM date_comparison WHERE DATE(col_datetime) = '2005-06-03';

出力:

+----+---------------------+
| ID | col_datetime        |
+----+---------------------+
|  4 | 2005-06-03 06:22:11 |
+----+---------------------+
1 row in set (0.00 sec)

日付のみに注目する場合は、DATE() 関数を使用して col_datetime を日付に変換できます。

例:

SELECT ID, DATE(col_datetime) FROM date_comparison
WHERE DATE(col_datetime) = '2005-06-03';

出力:

+----+--------------------+
| ID | DATE(col_datetime) |
+----+--------------------+
|  4 | 2005-06-03         |
+----+--------------------+
1 row in set (0.00 sec)

CAST() を使用して、MySQL タイムスタンプの日付を日付パラメーターのみと比較する

CAST() 関数を使用して、タイムスタンプの日付を日付パラメーターのみと比較することもできます。

例:

SELECT ID, CAST(col_datetime AS DATE) FROM date_comparison
WHERE CAST(col_datetime AS DATE) = '2005-06-03';

出力:

+----+----------------------------+
| ID | CAST(col_datetime AS DATE) |
+----+----------------------------+
|  4 | 2005-06-03                 |
+----+----------------------------+
1 row in set (0.00 sec)

CONVERT() を使用して、MySQL タイムスタンプの日付を日付パラメーターのみと比較する

CONVERT() 関数は、タイムスタンプと日付のみを比較することもできます。

例:

SELECT ID, CONVERT(col_datetime, DATE) FROM date_comparison
WHERE CONVERT(col_datetime, DATE) = '2005-06-03';

出力:

+----+-----------------------------+
| ID | CONVERT(col_datetime, DATE) |
+----+-----------------------------+
|  4 | 2005-06-03                  |
+----+-----------------------------+
1 row in set (0.00 sec)

BETWEEN を使用して、MySQL タイムスタンプの日付を日付パラメーターのみと比較する

次のソリューションは、col_datetime 列のインデックスを使用できるため、col_datetime 列に (TIMESTAMP タイプの) インデックスがある場合に最も高速です。

例:

SELECT * FROM date_comparison
WHERE col_datetime
BETWEEN '2005-06-03 00:00:00' AND '2005-06-03 23:59:59';

出力:

+----+---------------------+
| ID | col_datetime        |
+----+---------------------+
|  4 | 2005-06-03 06:22:11 |
+----+---------------------+
1 row in set (0.00 sec)
著者: Mehvish Ashiq
Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook

関連記事 - MySQL Timestamp