2016-11-11 30 views
0

我想使用BETWEEN的日期,但它保持失敗,它只是返回所有結果,如果我= =或在它工作正常,但之間不能任何人的幫助,感謝其中convert(varchar(10)日期之間不工作

WHERE CASE 
    WHEN [BVContact] IS NOT NULL 
     THEN convert(VARCHAR(10), [ContactStarted], 103) 
    WHEN [TelephoneConsultationStartedBy] IS NOT NULL 
     THEN convert(VARCHAR(10), [TelephoneConsultationStarted], 103) 
    WHEN [HomeVisitContactBy] IS NOT NULL 
     THEN convert(VARCHAR(10), [HomeVisitContactStarted], 103) 
    ELSE '' 
    END between '01/10/2016' 
    AND '02/10/2016' 
+0

什麼方言的SQL是這樣的嗎?你跟? –

+4

的工作是什麼樣的數據** ** NEVER轉換日期爲varchar進行比較。你是比較字符串,所以在同樣的方式,「BAAA」在「ABBB」之後排序,類似地,「02/01」在「01/02」之後排序(因爲它比較了從左到右的每個字符)如果希望SQL Server將值作爲日期,然後將它們保存爲日期當你把'01/10/2016',你的意思是2016年10月1日或者1月10日,也可能希望使用文化不變格式'yyyyMMdd'?請記住,並非所有國家都使用相同的日期設置 – GarethD

+0

謝謝GarethD我愚蠢地從我的代碼的一部分複製的東西CONVERT是不需要的,現在工作很好傻我:) – g4cox

回答

-1
WHERE CASE 
    WHEN [BVContact] IS NOT NULL 
     THEN convert(VARCHAR(10), [ContactStarted], 120) 
    WHEN [TelephoneConsultationStartedBy] IS NOT NULL 
     THEN convert(VARCHAR(10), [TelephoneConsultationStarted], 120) 
    WHEN [HomeVisitContactBy] IS NOT NULL 
     THEN convert(VARCHAR(10), [HomeVisitContactStarted], 120) 
    ELSE '' 
    END between '2016-10-01' 
    AND '2016-10-02' 
+0

這將比較字符串與字符串。 – Matt