0

MSSQL データベースから日付範囲を選択する必要がありますが、s.ended フィールドが日時フィールドとして設定されていません。これは varchar として設定されており、保存される日付の形式は d/m/Y.

以下の are 句を試しましたが、以下のエラー メッセージが表示されます。データベースの設計を変更せずにこれを回避する方法を知っている人はいますか?

Where 句:

WHERE  
   (S.ended > CONVERT(DateTime, '28/07/2012 00:00:01', 103)) 
   AND (S.ended < CONVERT(DateTime, '28/08/2012 00:00:01', 103))

エラーメッセージ:

varchar データ型を datetime データ型に変換すると、範囲外の値になりました。

4

3 に答える 3

2

これを試して:

WHERE  
   (CONVERT(DateTime, S.ended, 103) > CONVERT(DateTime, '28/07/2012 00:00:01', 103)) 
   AND (CONVERT(DateTime, S.ended, 103) < CONVERT(DateTime, '28/08/2012 00:00:01', 103))
于 2012-08-28T14:20:49.933 に答える
1

S.ended値と比較する前に、 が適切な形式でない可能性がありDatetimeます。

そのため、まずその値を Datetime に変換してから比較します。

于 2012-08-28T14:21:59.813 に答える
-1
WHERE (S.ended > CONVERT(DateTime, '28/07/2012 00:00:01', 103)) AND (S.ended < CONVERT(DateTime, '28/08/2012 00:00:01', 103))

'28/07/2012 00:00:01' の代わりに日付を米国スタイルの日付に変更して、'07/28/2012 00:00:01'を試してみてください。

于 2012-08-28T13:49:06.723 に答える