我知道您可以使用CASE选择另一列的值来设置间隔:
SELECT CASE some_column
WHEN "SOME_VALUE" THEN date_add(date, INTERVAL value DAY)
WHEN "SOME_OTHER_VALUE" THEN date_add(date, INTERVAL value DAY)
END
AS newDate
FROM table
但是我如何从脚本中传递这个数字(而不是数据库中的值)。
例如,我有一个常量PHP脚本,它从.env文件中获取它的值:
define("DOWNLOAD_DAYS", getenv("DOWNLOAD_DAYS")); // say this is 3 for example
我的查询当前如下所示:
$sql = 'SELECT * FROM orders WHERE user_id = :user_id
AND status = :status
AND date_added > DATE_SUB(NOW(), INTERVAL 7 DAY)
ORDER BY date_added DESC';
我怎么能用
DOWNLOAD_DAYS
替换此查询中的7的常量?
我试过。。。
AND date_added > DATE_SUB(NOW(), INTERVAL DOWNLOAD_DAYS DAY)
... 这显然不起作用
INTERVAL
需要关键字,而不是字符串或变量。
并尝试将整个命令与PDO绑定。。。
$range = 'DATE_SUB(NOW(), INTERVAL ' . DOWNLOAD_DAYS . ' DAY)';
...
AND date_added > :range
...
$stmt->bindParam(':range', $range, PDO::PARAM_STR);
.. 但这一切都没有。
有什么建议吗?