2016-01-09 67 views
0

我想從我的數據庫中刪除行數超過4 year.this是我query.Is tat correect?在這裏「$ year」是從我的數據庫表中的年份。如何刪除比某年更早的行?

"DELETE FROM undergraudate WHERE YEAR(GETDATE())-'$year'>4" 
+1

你是什麼意思'$ year'是從你的數據庫表中的年份。它看起來像一個變量給我。另外,MySQL不支持'GETDATE()'。你需要解決你的問題。提供樣本數據,所需結果,並正確標記問題。 –

回答

2

如果今天的日期是2016年1月9日,你的表的日期是10日2012年十一月那麼好,你可以不喜歡你的查詢將行不通:

DELETE FROM undergraudate 
WHERE year > UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 1461 DAY)) 
+0

這裏「年」是什麼? –

+0

我認爲'year'是數據庫中字段的名稱。這個查詢很好,因爲您可以在該字段上創建索引,並且它將起作用。在從第二個答案查詢它不會。 – Evgeny

0

是的,它看起來不錯但很可能你的數據庫中有日期時間或日期字段,所以如下所示。再次,GETDATE()是一個SQL Server功能。我覺得你的意思CURDATE()NOW()

DELETE FROM undergraudate 
WHERE YEAR(CURDATE()) - YEAR(your-date-field) > 4 
相關問題