2016-08-02 59 views
0

我正在使用下面的SQL查詢,我只想得到列「上次更新日期」大於或等於01/01/2016的記錄。基本上只有在2016年的記錄。當我使用下面的查詢,我沒有得到任何錯誤,但我仍然得到每個日期不只是2016年。我的語法有什麼問題嗎?SQL - 大於日期查詢不起作用

SELECT 
    NPI, 
    [Entity Type Code], 
    [Replacement NPI], 
    [Employer Identification Number (EIN)], 
    [Provider Organization Name (Legal Business Name)], 
    [Provider Last Name (Legal Name)], 
    [Provider First Name], 
    [Provider Middle Name], 
    [Provider Name Prefix Text], 
    [Provider Name Suffix Text], 
    [Provider Credential Text], 
    [Provider Other Organization Name], 
    [Provider Other Organization Name Type Code], 
    [Provider Other Last Name], 
    [Provider Other First Name], 
    [Provider Other Middle Name], 
    [Provider Other Name Prefix Text], 
    [Provider Other Name Suffix Text], 
    [Provider Other Credential Text], 
    [Provider Other Last Name Type Code], 
    [Provider First Line Business Mailing Address], 
    [Provider Second Line Business Mailing Address], 
    [Provider Business Mailing Address City Name], 
    [Provider Business Mailing Address State Name], 
    [Provider Business Mailing Address Postal Code], 
    [Provider Business Mailing Address Country Code (If outside U S)], 
    [Provider Business Mailing Address Telephone Number], 
    [Provider Business Mailing Address Fax Number], 
    [Provider First Line Business Practice Location Address], 
    [Provider Second Line Business Practice Location Address], 
    [Provider Business Practice Location Address City Name], 
    [Provider Business Practice Location Address State Name], 
    [Provider Business Practice Location Address Postal Code], 
    [Provider Business Practice Location Address Country Code (If outside U S)], 
    [Provider Business Practice Location Address Telephone Number], 
    [Provider Business Practice Location Address Fax Number], 
    [Provider Enumeration Date], 
    [Last Update Date] 
FROM Data 
WHERE ([Healthcare Provider Taxonomy Code_1] IN ('122300000X', '1223G0001X')) 
AND ([Last Update Date] >= '01/01/2016') 
+1

什麼數據類型是你的'上次更新日期'列? –

+0

它是一個varchar(200) – user1342164

+4

這是你的問題,你可能需要投它們,所以他們都擁有相同的形式的信息。您可以嘗試將它們投射到DATE – antorqs

回答

1

使用,而不是([Last Update Date] >= '01/01/2016')如下:

YEAR([Last Update Date]) = 2016

讓所有的更新在2016年

+0

謝謝,這對我有用 – user1342164

+0

那麼爲什麼不接受這個答案? – MusicLovingIndianGirl

+1

他希望比2016-01-01更大,因此您在以後幾年中查詢不起作用。 –

1

使用日期時間的狀態進行記錄:

and CONVERT(datetime, [Last Update Date], 121) >= CONVERT(datetime,'01/01/2016',121) 
1

使用此:

WHERE CONVERT(datetime, [Last Update Date], 101) >= '2016-01-01' 

注意格式掩蓋你想要的是101,對應於數據格式mm/dd/yyyy(見documentation)。這假定您以這種格式存儲您的日期,並通過您在原始WHERE子句中使用的格式進行比較。

另請注意,在上述表達式中,您不需要在比較的RHS上使用CONVERT,因爲SQL Server應該能夠處理日期文本,前提是它是標準格式。