5

誰かが私の間違いを教えてもらえますか? そのクエリを使用すると、データに datetime = '2012-10-12' が含まれる行が返されるはずですよね? ここに私の参照があります

私の日時列 = 'YYYY-MM-DD HH:MM:SS'、データ型 = 日時。

XAMPP v1.8.0、MySQL v5.5.25a を使用しています。

4

4 に答える 4

12

CAST使ってみるdatetimedateDATE()

SELECT * 
FROM tableName
WHERE DATE(`datetime`) = DATE(CURDATE())

YYYY-MM-DD HH:MM:SS等しくないYYYY-MM-DD

2012-01-01 12:12:12 is not equal to 2012-01-01 00:00:00
于 2012-10-12T03:20:51.640 に答える
6

列で関数を使用しないでください。たとえば、DATE(datetime)mysql はインデックスを使用できません。

範囲を使用する方がほぼ確実に優れています。

WHERE `datetime` between '2012-01-01 00:00:00' and '2012-01-01 23:59:59'

または、DATE 部分だけを別の列に格納します (カーディナリティが低くなり、オプティマイザーによって適切に処理されます)。

于 2012-10-12T03:32:21.137 に答える
1

DATE()mysql から使用して、TIMESTAMP を DATE にフォーマットします

Select * FROM tablename WHERE DATE(colname) = CURDATE()

于 2016-09-09T06:58:19.157 に答える