Py学习  »  DATABASE

MYSQL动态插入间隔日数?[副本]

spice • 5 年前 • 1612 次点击  

我知道您可以使用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);

.. 但这一切都没有。

有什么建议吗?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/49343
 
1612 次点击  
文章 [ 1 ]  |  最新文章 5 年前