MySQL タイムスタンプの日付を日付パラメーターのみと比較する
-
MySQL の
DATE()
vs.CAST()
vs.CONVERT()
- MySQL タイムスタンプの日付を日付パラメーターのみと比較する
-
DATE()
を使用して、MySQL タイムスタンプの日付を日付パラメーターのみと比較する -
CAST()
を使用して、MySQL タイムスタンプの日付を日付パラメーターのみと比較する -
CONVERT()
を使用して、MySQL タイムスタンプの日付を日付パラメーターのみと比較する -
BETWEEN
を使用して、MySQL タイムスタンプの日付を日付パラメーターのみと比較する
今日は、DATE()
、CAST()
、および CONVERT()
関数を使用して、MySQL タイムスタンプの日付を日付パラメーターのみと比較します。
MySQL の DATE()
vs. CAST()
vs. CONVERT()
以下、各機能の簡単な紹介です。 ここ をクリックすると、それぞれの例をさらに見つけることもできます。
MySQL の DATE()
メソッド
DATE()
メソッドは、タイムスタンプまたは DateTime 式から日付部分を抽出します。 パラメータは、DATE
、TIMESTAMP
、または 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 タイムスタンプの日付を日付パラメーターのみと比較するには、ID
と COL_DATETIME
の 2つの属性を持つ date_comparison
という名前のテーブルを作成します。 ここで、ID
は int 型、COL_DATETIME
は TIMESTAMP
です。
次のクエリを使用してこのテーブルを作成し、このチュートリアルに従うこともできます。
例:
# 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)