使用SQL和日期操作

时间:2012-03-06 16:03:22

标签: mysql sql join left-join

我是SQL日常操作的新手。

但是,我需要通过X date<返回记录过滤器的查询。或者> 30天或类似。

我现在有这个问题:

SELECT nome_prodotto,quantita 
FROM prodotti 
LEFT JOIN acquisti 
    ON prodotti.id_prodotto = acquisti.id_prodotto

我的目标是获取过去30天内未购买的产品或类似产品

4 个答案:

答案 0 :(得分:2)

 WHERE DATE_SUB(CURDATE(),INTERVAL 30 DAY) =< your_date;

答案 1 :(得分:1)

如果acquisti中的日期字段被称为date_acquisti,那么过去30天内未购买的产品将会被查询:

SELECT nome_prodotto,quantita 
FROM prodotti 
LEFT JOIN acquisti 
    ON (prodotti.id_prodotto = acquisti.id_prodotto
        AND acquisti.date_acquisti > CURDATE() - INTERVAL 30 DAY)
where acquisti.id_prodotto is NULL

诀窍是使用JOIN condition来获取过去30天内的产品获取。由于这是LEFT JOIN,因此acquisti.id_prodottoNULL的结果集中的任何行都表示该期间未购买该产品。

答案 2 :(得分:0)

您可以使用date_add功能来实现此目标

例如:

x_date between DATE_ADD(NOW(), INTERVAL -1 MONTH) and NOW()

答案 3 :(得分:0)

另外,

where myDate between some_date and some_other_date

可能在其他类似情况下帮助您。