2016-10-12 4 views
0

は、だから私はではなく、2016年10月と2016年12月31日の間で1日以降2017年1月のデータを引き戻す必要がある複数の日付間ではなく、複数の日付でクエリを作成するにはどうすればよいですか?

これは私の現在のコードです:私は、コードはとても助けてください間違っている知っている

SELECT [SequenceID] 
    ,[AppointmentDate] 
FROM dbo].[AmsAppointment] 

where AppointmentDate >= Convert(datetime, '2017-01-01') and AppointmentDate <= Convert(datetime, '2016-10-01') 

私。

+1

> '12/31/2017 'と同じではありませんか? – Hambone

+0

あなたは '2017-01-01'より大きい(=遅い)日付を見つけて、' 2016-10-01'より小さい(=より早い)日付を探したいでしょうか? – Shnugo

+0

ここには[偉大な記事](http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/16/bad-habits-to-kick-mishandling-date-range-queries.aspx)のチェック方法時間の範囲(どのようにしてはならないか...)。 – Shnugo

答えて

1

あなたはこのにいくつかの方法を行うことができますが、私はnot betweenが最高の仕事だと思う:

SELECT [SequenceID], [AppointmentDate] 
FROM [dbo].[AmsAppointment] 
where 
    AppointmentDate >= '2017-01-01' and 
    AppointmentDate not between '2016-10-01' and '2017-12-31' 

そしておそらくあなたの例範囲が重複するので、あなたのシナリオでは、これは本当にに変換だけでなく、 :

AppointmentDate >= '2017-12-31' 
+0

私は質問の下にリンクしている記事を見てください。 'BETWEEN'で日付範囲をチェックするために*キックするのは悪い習慣です。特にあなたが*裸の日*を扱わない場合、時間部分が関わっていると、人々は非常にしばしば予期せぬ結果を得る... – Shnugo

関連する問題