MySQL查询选择过去的某一天?

时间:2014-10-04 19:02:20

标签: mysql sql joomla

我有一个joomla网站,我想做一个查询,它可以每天用cronjob运行。它会查找30天前的任何文章,并在特定日期删除文章。

我可以这样做一个简单的查询:

SELECT * FROM  `ibps6_content`
    WHERE created > '2013-10-16' AND created < '2013-10-16'

但我不知道如何指定过去30天,而不是硬编码日期。

4 个答案:

答案 0 :(得分:0)

哪个rdbms? 在oracle中,您可以使用基于sysdate的select来表示当前日期/时间。

示例:

select * from ibps6_content WHERE created between sysdate - 30 and sysdate

答案 1 :(得分:0)

在T-SQL中,您可以使用以下内容:

SELECT
    *
FROM
    ibps6_content
WHERE
    created BETWEEN DATEADD(DAY, -30, GETDATE()) AND GETDATE()

请注意,这将为您提供在您运行文章的特定时间内撰写的文章。要删除时间并仅使用日期,您可以使用:

DECLARE @CurDate DATETIME;
SET @CurDate = DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE()));

SELECT
    *
FROM
    ibps6_content
WHERE
    created BETWEEN DATEADD(DAY, -30, @CurDate) AND @CurDate

答案 2 :(得分:0)

如果创建的是表中的日期数据类型

DELETE FROM ibps6_content WHERE created = CURRENT_DATE -INTERVAL 30 DAY

如果它的日期时间使用DATE(已创建)

答案 3 :(得分:-2)

您需要mysql DATE_FORMAT(date,format)功能。

请尝试将您的查询设置为:

DELETE FROM `ibps6_content` WHERE created > DATE_FORMAT(NOW() - INTERVAL 1 MONTH, '%Y-%m-%d');

希望这有帮助