0

ourdateタイプがの列を持つ単純なSQLServer2008テーブルがありますdate

そのため、日付の値を適用しようとしbetweenましたが、機能せず、エラーが発生します。

メッセージ241、レベル16、状態1、行1
文字列から日付や時刻を変換するときに変換に失敗しました

このようなコード:

select * 
from [ComplainsDb].dbo.dateTB 
where ourdate between '2012-11-01' AND '2012-12-31';
4

3 に答える 3

3

すべての言語と地域の設定で安全な日付文字列形式を使用する必要があります。

ISO-8601形式YYYYMMDD(注:ダッシュなし!)はすべての状況で機能します-これを試してください:

select * 
from [ComplainsDb].dbo.dateTB 
where ourdate between '20121101' AND '20121231';
于 2012-11-13T16:47:32.113 に答える
2

以下のように日付に変換してみてください。

select *
from dateTB  
where ourdate between convert(datetime,'2012-11-01') and convert(datetime,'2012-12-31');

select *
from dateTB  
where convert(datetime,ourdate) between '2012-11-01' and '2012-12-31';

以下のようにキャストを使用することもできます

select *
from dateTB  
where ourdate between cast('2012-11-01' as datetime) and cast('2012-12-31' as datetime);

select *
from dateTB  
where cast(ourdate as datetime) between '2012-11-01' and '2012-12-31';
于 2012-11-13T16:52:30.500 に答える
1

文字列を日付にキャストする必要があります。

select * 
from [ComplainsDb].dbo.dateTB 
where ourdate between Cast('2012-11-01' AS Date) AND Cast('2012-12-31' AS Date);
于 2012-11-13T16:50:34.140 に答える