2014-12-03 57 views
0

我試圖選擇不是標準格式的日期字段,而只選擇年齡超過X天的日期。做一些搜索,並在這裏找到一些例子,但我似乎無法讓我的工作。SQL選擇非標準日期大於X

我的日期格式是這樣的:星期三12月3日九時00分46秒2014 位於一列:rundate(文本)

SELECT * FROM myTable WHERE rundate < DATEADD((day, -5, GETDATE()), '%a %b %e %T %Y') 

我收到錯誤,如:功能myDB.DATEADD不存在

任何想法如何讓這個工作?我的最終目標是刪除舊記錄,但現在選擇它們會很棒!希望你能幫助。

乾杯

回答

0

你要找的功能是date_add(注意下劃線)。 此外,而不是比較日期的文本表示(即,兩個轉換爲字符串),你應該將字符串轉換爲日期:也

SELECT * 
FROM myTable 
WHERE STR_TO_DATE(rundate, '%a %b %e %T %Y') < 
     DATE_ADD(CURDATE(), INTERVAL -5 DAY) 

,如果你想減去日期,然後date_sub可能是更直觀:

SELECT * 
FROM myTable 
WHERE STR_TO_DATE(rundate, '%a %b %e %T %Y') < 
     DATE_SUB(CURDATE(), INTERVAL 5 DAY) 
+0

感謝您的回覆。我試過這兩個查詢,我得到了同樣的錯誤:myTable.GETDATE不存在 – Plexter 2014-12-04 20:10:45

+0

我不知道爲什麼我在我腦海中認爲這是MS-SQL。在MySQL中,當前日期是'curdate()',而不是'getdate()' - 請參閱我編輯的答案。 – Mureinik 2014-12-04 23:25:09

+0

非常感謝。更新的腳本正在工作。只想確認上面的兩個例子大致是一樣的,還是我錯過了一些東西?他們似乎都選擇了最近5天后的所有記錄。 – Plexter 2014-12-05 16:02:43