2016-11-11 6 views
0

私は日付の間にBETWEENを使用しようとしていますが、それが失敗するとすべての結果が返されます。誰も助け、感謝where convert(varchar(10)for not workingの間の日付)

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

を扱う**比較のためにVARCHARに日付を変換しないでください。あなたがでて、文字列を比較しているされているデータのどのような種類同じように "BAAA"は "ABBB"の後にソートされ、同様に "02/01"は "01/02"の後にソートされます(左から右の各文字を比較するためです)。日付として保存してください。 '01/10/2016'を置いたときに文化不変式の' yyyyMMdd'を使うことを望みますか、2016年10月1日、または1月10日を意味しますか?すべての国が同じ日付設定を使用しているわけではありません。 – 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