17
offers.date = CURDATE() 

私が現在持っているもの。

今日のオファーを取得しますが、昨日の注文も取得したいと思います。

昨日の日付を指定せずにこれを行うにはどうすればよいですか?

4

4 に答える 4

47

CURDATE マイナスまたはプラス間隔 (たとえば昨日) を使用するには、DATE_ADD関数を使用できます。

SELECT DATE_ADD(CURDATE(), INTERVAL -1 DAY);

したがって、あなたの場合、次のように使用します。

WHERE offers.date = CURDATE() OR offers.date = DATE_ADD(CURDATE(), INTERVAL -1 DAY)

オプションで、DATE_SUB() 関数を使用して、負の間隔の代わりに同じ間隔で正の間隔を使用することもできます。

したがってDATE_ADD(CURDATE(), INTERVAL -1 DAY)DATE_SUB(CURDATE(), INTERVAL 1 DAY)

于 2012-11-26T19:55:46.950 に答える
12

次のように言う方が簡単なように思えます

WHERE offers.date >= CURDATE() - INTERVAL 1 day
于 2014-07-01T14:50:13.327 に答える
5

@edwardmpの回答に基づいて構築すると、この構文は次を使用するよりもわずかに読みやすいことがわかりますDATE_ADD()

current_date() - interval 1 day

また、かっこについてあまり心配することなく、これを where 句の残りの部分と簡単に組み合わせることができるようにするIN代わりに使用します。OR

WHERE offers.date in (current_date(), current_date() - interval 1 day)
于 2012-11-26T20:18:49.330 に答える