0

テーブルにいくつかのデータがあり、そこからのデータをクエリしたいのですが、クエリがいつ実行されるかに応じて、クエリで現在のタイムスタンプを考慮に入れたいと思います。

例えば

declare @data table (id int, value nvarchar (50))

insert into @data values (1, 'First value')
insert into @data values (2, 'Second value')
insert into @data values (3, 'Third value')
insert into @data values (4, 'Fourth value')

クエリ1

select * from @data
where value != 'First value'
and (value != 'Second value' and  '2012-08-30 23:59:59' between '2012-08-30 23:59:59' and '2012-09-15 23:59:59')

クエリ1は「3番目の値」と「4番目の値」を返します

クエリ2

select * from @data
where value != 'First value'
and (value != 'Second value' and  '2012-08-29 23:59:59' between '2012-08-30 23:59:59' and '2012-09-15 23:59:59')

クエリ2は値を返さないので、「2番目の値」「3番目の値」「4番目の値」を返したい

よろしく、ジェスパーすべての助けに感謝します

4

2 に答える 2

2

演算子を探していますがXOR、SQL2008 にはそのようなものはありません。a XOR bとして表現する必要があります(a AND (NOT b)) OR ((NOT a) AND b)

于 2012-08-31T09:12:05.930 に答える
1

「2012-08-29 23:59:59」は他の 2 つの日付の間にないため、2 番目のクエリは値を返しません。

明確に除外しているため、「2番目の値」は決して返されません。

実装しようとしているロジックをもう少し明確にする必要があると思います。おそらく最後の AND を OR NOT に置き換えると、より近づくことができますが、これは推測です。

select * from @data
where value != 'First value'
and (value != 'Second value' OR NOT ( '2012-08-29 23:59:59' between '2012-08-30 23:59:59' and '2012-09-15 23:59:59'))
于 2012-08-31T09:13:24.177 に答える