2014-10-04 51 views
1

我有一個joomla網站,我想做一個查詢,它可以每天運行一個cronjob。它會查找30天之前的任何文章,並刪除該特定日期的文章。MySQL查詢選擇過去的某一天?

我可以做一個簡單的查詢是這樣的:

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

但我不知道如何使它指定的,而不是硬編碼的日期最近30天。

+0

您正在使用哪些DBMS? Postgres的?甲骨文? – 2014-10-04 19:26:23

回答

-2

你需要的MySQL DATE_FORMAT(date,format)功能。

請嘗試設置您的查詢爲:

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

希望這有助於

+0

這項工作但最近30天刪除所有文章。我如何刪除30天前創建的文章,只有這一天? – 2014-10-04 22:26:39

+0

您只需用'='替換'>'。 – emmanuel 2014-10-05 04:41:52

+1

當您可以使用日期數據類型時,不要使用dateformat。 – Gervs 2014-10-05 11:37:12

0

哪個rdbms? 在oracle中,您可以使用基於sysdate的選擇,它代表當前的日期/時間。

例子:

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

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 
0

如果建立在表的日期數據類型

DELETE FROM ibps6_content WHERE created = CURRENT_DATE -INTERVAL 30 DAY 

如果它的日期時間使用日期(創建)