2014-05-05 64 views
0

我試圖運行一個查詢,返回一組結果的日期比今天少,不包括某些日期。出於某種原因,我的結果包括未來的日期(例如2016年,2025年,2030年等)。SQL日期條件

我在做什麼錯?

SELECT DISTINCT 
LTRIM(RTRIM(term_date)) as term_date 
FROM [IMR].[PERSON].[vwIMRDetailMostRecent] 
WHERE emp_description = 'active' 
AND CONVERT(char(8),LTRIM(RTRIM(term_date)),1) < CONVERT(char(8),GETDATE(),1) 
AND CONVERT(char(8),LTRIM(RTRIM(term_date)),1) <> '01/01/01' 
AND CONVERT(char(8),LTRIM(RTRIM(term_date)),1) <> '01/01/00' 
AND CONVERT(char(8),LTRIM(RTRIM(term_date)),1) <> '' 
ORDER BY term_date desc 
+2

如果term_date是日期/ datetime列,那麼你可以簡單地說 「... AND term_date

+0

語法看起來非常多sqlserver-ish,所以我假設。另外,看到您也修剪term_date屬性時,它可能不是日期時間字段。如果它沒有返回正確的記錄,它可能不是很好的格式。你可以試試它如何響應轉換爲日期時間。 – HoneyBadger

+0

謝謝HoneyBader那是問題所在。 Term_Date屬於數據類型varchar,當我將它轉換爲datetime時,根據我的條件,結果是正確的。謝謝! – BPurchell

回答

0

這有幫助嗎?

SELECT DISTINCT 
(term_date) 
FROM [IMR].[PERSON].[vwIMRDetailMostRecent] 
WHERE emp_description = 'active' 
AND (term_date) <> CONVERT (date, GETDATE()) 
AND (term_date) <> CONVERT (datetime,'01/01/01',101) 
AND (term_date) <> CONVERT (datetime,'01/01/00',101) 
AND (term_date) <> 
ORDER BY term_date desc 

日期格式參見:http://msdn.microsoft.com/en-us/library/ms187928.aspx