MySQL日期查询

时间:2011-05-30 18:43:59

标签: mysql

我想创建一个查询,从表格中选择一个随机行,其开始日期+时间小于当前日期。

这是我到目前为止所做的:

$query="SELECT * FROM premium 
        WHERE 
        DATE_SUB(CURDATE(),INTERVAL 30 DAY) <= start_date 
        ORDER BY
        RAND() LIMIT 1 ";

我想将30替换为每行time列的值。 如何访问查询中每行的time值? (在间隔内)

2 个答案:

答案 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()函数并在查询中进行相同的计算。