我有一個joomla網站,我想做一個查詢,它可以每天運行一個cronjob。它會查找30天之前的任何文章,並刪除該特定日期的文章。MySQL查詢選擇過去的某一天?
我可以做一個簡單的查詢是這樣的:
SELECT * FROM `ibps6_content`
WHERE created > '2013-10-16' AND created < '2013-10-16'
但我不知道如何使它指定的,而不是硬編碼的日期最近30天。
我有一個joomla網站,我想做一個查詢,它可以每天運行一個cronjob。它會查找30天之前的任何文章,並刪除該特定日期的文章。MySQL查詢選擇過去的某一天?
我可以做一個簡單的查詢是這樣的:
SELECT * FROM `ibps6_content`
WHERE created > '2013-10-16' AND created < '2013-10-16'
但我不知道如何使它指定的,而不是硬編碼的日期最近30天。
你需要的MySQL DATE_FORMAT(date,format)功能。
請嘗試設置您的查詢爲:
DELETE FROM `ibps6_content` WHERE created > DATE_FORMAT(NOW() - INTERVAL 1 MONTH, '%Y-%m-%d');
希望這有助於
哪個rdbms? 在oracle中,您可以使用基於sysdate
的選擇,它代表當前的日期/時間。
例子:
select * from ibps6_content WHERE created between sysdate - 30 and sysdate
在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
如果建立在表的日期數據類型
DELETE FROM ibps6_content WHERE created = CURRENT_DATE -INTERVAL 30 DAY
如果它的日期時間使用日期(創建)
您正在使用哪些DBMS? Postgres的?甲骨文? – 2014-10-04 19:26:23