这里是我的代码:

SELECT *
FROM  `products`
WHERE
DATE_ADD( UTC_TIMESTAMP( ) , INTERVAL 7 HOUR )
BETWEEN DATE_SUB( STR_TO_DATE( IsPromotionDate,  '%m/%d/%Y %H:%i' ) , INTERVAL 3 DAY )
AND STR_TO_DATE( IsPromotionDate,  '%m/%d/%Y %H:%i' )

但结果返回所有在IsPromotionDate之前而不是IsPromotionDate-3之后的产品。我还是不明白为什么。

最佳答案

试试这个:

SELECT * FROM  `products`
WHERE DATE_ADD(UTC_TIMESTAMP( ), INTERVAL 7 HOUR) BETWEEN DATE_SUB(IsPromotionDate, INTERVAL 3 DAY) AND IsPromotionDate

或者
SELECT * FROM  `products`
WHERE DATEDIFF(DATE_ADD(UTC_TIMESTAMP(), INTERVAL 7 HOUR), IsPromotionDate) BETWEEN 0 AND 3

08-24 16:28