2013-12-18 37 views
1

過期我有,有一個DATE_ADDED柱和到期時間的表,以天爲單位設定。SQL查詢來選擇的日期行加入其中時,他們在一個領域在同一個表

我曾嘗試以下:

select * 
from `claims` 
where date_added(`date_added`, interval `expire_period` day) < date(now()) 

我試圖重新格式化並仍然得到一個錯誤。

這是解決:

SELECT * FROM dkclaims WHERE DATE_ADD(date_added,間隔expire_period天)<日期(現在的());

+2

歡迎堆棧溢出。什麼是您收到的錯誤信息? – simbabque

+1

其他人已經在下面給出了你的問題的答案。然而,值得注意的是,通過存儲'expiry_date'而不是'expire_period',你會獲得更好的性能 - 特別是如果該列被索引的話。 – eggyal

+0

錯誤信息是按照最後的答案下面,但我想通了,我的問題,語法在年底離開了那該死的分號。 –

回答

1

您的SQL語法是錯誤的。沒有功能date_added。你需要的是date_add

SELECT * 
FROM claims 
WHERE DATE_ADD(date_added, INTERVAL expire_period DAY) < DATE(NOW()); 

你的錯誤信息會告訴你是這樣的:

SQL錯誤(1064):你在你的SQL語法錯誤;檢查 手冊,在1號線

correcsponds你的MySQL服務器版本的權利 語法使用近「))<日期((現在的)」因此,它不知道如何處理收盤辦托架。從那裏,你可以追蹤到哪裏是開放的括號。在date_added旁邊。這不是一個功能。

您也可以依靠數據庫客戶端上。我在Windows上使用HeidiSQL,並突出顯示所有關鍵字(包括函數)。 date_added在您的查詢中不是藍色。

+0

+ simbabque。你說的是對的。在我發佈之前,我正忙於閱讀語法,在date_add的位置讓我感到困惑,因爲我表格中的列是date_added,我修改了它。但它仍然不起作用,因爲我最後錯過了分號。我無法修改上述查詢,因爲有人已經發布了回覆。 –

+0

太好了。請查看[faq]瞭解Stack Overflow的工作原理。如果你看到有用的東西,請注意它。如果此答案解決了您的問題,請通過單擊投票下方左側的checmark來接受此問題。那樣,其他人知道什麼幫助了你。 – simbabque

1

試試這個:

select * 
from claims 
where date_add(date_added, interval expire_period day) < date(now()) 

Reference of DATE_ADD

相關問題