1

我有一个字段date_purchaseddate_ordered哪些是日期时间字段。现在我需要获取该产品是在下单后购买的记录,如果购买是在下单前 2 天或下单后 7 天:

if(date_purchased>date_ordered)
{
    if(date_purchased>(today-2) or date_puchased<(date_ordered+7))
} 

基本上,我如何将上面的代码翻译成 mysql where 条件(嵌套和/或)?

4

3 回答 3

5

使用DATE_SUB()DATE_ADD()将天数添加到日期时间字段。两个日期比较()作为单个组件包含在AND.

WHERE
  date_purchased > date_ordered
  AND (
    date_purchased > DATE_SUB(NOW(), INTERVAL 2 DAY) 
    OR date_purchased  < DATE_ADD(date_ordered, INTERVAL 7 DAY)
  )

注意如果这些是DATETIME字段而不是DATE字段,您可能希望去掉时间部分,DATE()以便日期比较从一天的开始开始,而不是从当前时间开始的某个 24 小时间隔。这也意味着使用CURDATE()而不是NOW()获取今天的日期而不是时间戳。

WHERE
  date_purchased > date_ordered
  AND (
    DATE(date_purchased) > DATE_SUB(CURDATE(), INTERVAL 2 DAY) 
    OR DATE(date_purchased)  < DATE_ADD(DATE(date_ordered), INTERVAL 7 DAY)
  )
于 2012-04-27T13:10:09.553 回答
0

使用 BETWEEN 运算符选择间隔。

WHERE d BETWEEN *date-2 和 *date+7

于 2012-04-27T13:09:57.493 回答
0
SELECT * FROM your_table
WHERE date_purchased > date_ordered
    AND (DATE_DIFF(date_purchased, date_ordered) > 2
    OR DATE_DIFF(date_purchased, date_ordered) < -7)
于 2012-04-27T13:11:12.313 回答