2016-03-22 23 views
-6

が、私はそうで'PostSeason''Season'としてmarch 31st 2016後に発生March 1st 2016SQLのCASE文

'Preseason'などのイベントの前に発生する条件(およびイベントのカラム値( DateTime)をソートしたい。 --query --- 選択EVENTDATE =ケース ときEVENTDATE < '01 -03-2016' を 'プレシーズンtblEvent

から' EVENTDATE> '31 -03-2016' を 'ポストシーズン' エルス
'シーズン' 終わり、 EVENTNAMEを

--Errorメッセージ 「メッセージ242は、datetimeデータ型にvarcharデータ型の変換は、範囲外の値になった。」

+2

何を試しましたか? –

+0

このエラーは、DateTime列にDateTime以外の値があることを示しています。おそらくCASE文でそれをキャストしようとする可能性がありますか? –

+0

実際の明細書の転記は価値があるとは思わなかったのですか? – Paparazzi

答えて

0

- OK、日付形式の問題でした。私は私のクエリでヨーロッパの日付の形式(dd-mm-yyyy)を使用しましたが、私のシステムでは米国の日付の形式(mm-dd-yyyy)が使用されました。 **

  • ソリューション

** セレクトキャスト(ケース EVENTDATE < = '01/01/2016' を 'プレシーズン' ときEVENTDATE> = '2016年12月31日「その後、 'ポストシーズン'
エルス 'シーズン' tblEvent

支援のための

おかげからシーズンとしてVARCHAR(25))、EVENTNAMEとして 終了!!!!

0

のような何か...

ORDER BY 
    CASE 
    WHEN ISDATE(DateTime) = 1 THEN 
    CASE DateTime 
     WHEN <= '2016-03-01' THEN 1 -- Preseason 
     WHEN >= '2016-03-31' THEN 3 -- PostSeason 
     ELSE 2 END     -- Season 
    ELSE 4 END,      -- Not a date, figure out how to handle 
    DateTime 
+0

大丈夫、答えに感謝し、本当に私が見ているべきであることを指しているのは、case文でデータ型の競合を処理する方法です。 –