7

テーブルから前日のレコードを取得しようとしていますが、正確に行う方法がわかりません。あなたの助けが必要です..

表: RECORD_DATA

id       creationDate    
1   | 2013-05-03 04:03:35 |    
2   | 2013-05-03 04:03:35 | 

次に、2013 年 5 月 3 日に作成されたすべてのレコードを取得する必要があります。時間は何でもかまいません。したがって、クエリには LIKE 演算子が必要です。

以下のクエリを使用していますが、空のセットが返されます。

select creationDate from RECORD_DATA 
where creationDate LIKE DATE_SUB(STR_TO_DATE('2012-04-05','%d/%m/%Y'),INTERVAL 1 DAY);
4

5 に答える 5

23

SQL を使用すると、条件を追加するだけでかなり単純になります。

WHERE creationDate BETWEEN CURDATE() - INTERVAL 1 DAY AND CURDATE()

creationDate はすでに日付であるため、変換する必要はありません:)。そして、これがそれをチェックする最速の方法になると信じています(これは、大きなデータセットを調べる場合に重要になります).

于 2013-05-04T09:11:57.463 に答える
1

私はこれがそれを行うべきだと思います:

SELECT * FROM RECORD_DATA WHERE `creationDate` >= CURDATE()-1 and `creationDate` < CURDATE();
于 2013-05-04T09:10:59.070 に答える
1

これはINDEXon creationDate(がある場合) を使用します。

SELECT  *
FROM    TableName
WHERE   creationDate >= CURDATE() - INTERVAL 1 DAY AND
        creationDate < CURDATE()
于 2013-05-04T09:11:34.673 に答える
1

使用できます

SELECT *
FROM `tableName`
WHERE DAY(created) = DAY(CURRENT_DATE - INTERVAL 1 DAY)
于 2016-02-01T12:40:49.350 に答える