我想创建一个查询,从表格中选择一个随机行,其开始日期+时间小于当前日期。
这是我到目前为止所做的:
$query="SELECT * FROM premium
WHERE
DATE_SUB(CURDATE(),INTERVAL 30 DAY) <= start_date
ORDER BY
RAND() LIMIT 1 ";
我想将30
替换为每行time
列的值。
如何访问查询中每行的time
值? (在间隔内)
答案 0 :(得分:0)
SELECT * FROM premium
WHERE start_date < DATE_SUB(CURDATE(),INTERVAL HOUR(start_date) DAY)
ORDER BY RAND() LIMIT 1
或者,如果您的列名为time
,请执行
SELECT * FROM premium
WHERE start_date < DATE_SUB(CURDATE(),INTERVAL HOUR(`time`) DAY)
ORDER BY RAND() LIMIT 1
不要忘记在时间周围添加反引号`
,因为time
是保留字。
答案 1 :(得分:0)
基于'$ query'标签,我认为你是用PHP编译这个查询的吗?在这种情况下,为什么不在php中生成日期标记?这样的事情会起作用:
$date_before = date(<format>, time() - (30 × 24× 3600));
用''你想要的方式解析日期(比如'Y-m-d H:i:s')。
如果你想将它保存在查询本身中,你可以使用NOW()函数并在查询中进行相同的计算。