我有一个字段date_purchased
,date_ordered
哪些是日期时间字段。现在我需要获取该产品是在下单后购买的记录,如果购买是在下单前 2 天或下单后 7 天:
if(date_purchased>date_ordered)
{
if(date_purchased>(today-2) or date_puchased<(date_ordered+7))
}
基本上,我如何将上面的代码翻译成 mysql where 条件(嵌套和/或)?
我有一个字段date_purchased
,date_ordered
哪些是日期时间字段。现在我需要获取该产品是在下单后购买的记录,如果购买是在下单前 2 天或下单后 7 天:
if(date_purchased>date_ordered)
{
if(date_purchased>(today-2) or date_puchased<(date_ordered+7))
}
基本上,我如何将上面的代码翻译成 mysql where 条件(嵌套和/或)?
使用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)
)
使用 BETWEEN 运算符选择间隔。
WHERE d BETWEEN *date-2 和 *date+7
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)