Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL查询取决于当前时间_Sql_Sql Server 2008 - Fatal编程技术网

SQL查询取决于当前时间

SQL查询取决于当前时间,sql,sql-server-2008,Sql,Sql Server 2008,我在一个表中有一些数据,我想从中查询数据,并根据执行查询的时间,我希望查询考虑当前时间戳 比如说 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

我在一个表中有一些数据,我想从中查询数据,并根据执行查询的时间,我希望查询考虑当前时间戳

比如说

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返回“第三个值”和“第四个值”

问题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不返回任何值,我希望它返回 “第二个值” “第三价值” “第四价值”

谢谢你的帮助 当做
Jesper

您正在寻找
XOR
操作符,但SQL2008中没有这样的操作符。您需要将
XOR b
表示为
(a和(不是b))或((不是a)和b)
您正在寻找的
XOR
操作符,但SQL2008中没有这样的操作符。您需要将
a异或b
表示为
(a和(不是b))或((不是a)和b)

您的第二次查询将永远不会返回任何值,因为“2012-08-29 23:59:59”不在其他两个日期之间

它肯定不会返回“第二个值”,因为您专门排除了它

我认为您需要更清楚地了解您试图实现的逻辑,也许用OR NOT替换最后一个AND会让您更接近,但这只是一个猜测

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-29 23:59:59”不在其他两个日期之间

它肯定不会返回“第二个值”,因为您专门排除了它

我认为您需要更清楚地了解您试图实现的逻辑,也许用OR NOT替换最后一个AND会让您更接近,但这只是一个猜测

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'))

你说的当前时间戳是指执行时间吗?我不太明白你想达到什么目的:)是的,我指的是执行的时间。我希望在一段时间内从结果中排除一行。因此,您希望在一段时间内(条件x)从结果中排除行,并允许从“条件x”中排除某些值-例如,您希望选择今天上午10点到上午11点之间的所有值,但如果该值为“第二个值”应该选择regardles?当你说当前时间戳时,你是指执行时间吗?我不太明白你想达到什么目的:)是的,我指的是执行的时间。我希望在一段时间内从结果中排除一行。因此,您希望在一段时间内(条件x)从结果中排除行,并允许从“条件x”中排除某些值-例如,您希望选择今天上午10点到上午11点之间的所有值,但如果该值为“第二个值”,则应重新选择?