如何获取两个日期范围内的数据列表

时间:2015-04-13 09:08:38

标签: sql sql-server between

我想知道在我的查询的两个日期范围内获取uniqueidentifier列的最佳方法是什么

SELECT id, question, description
from Questions
where id between EffectiveFromDate and EffectiveToDate

问题的表结构是:

[Id] Uniqueidentifier Code varchar(255) 
[Question] varchar(500) 
[EffectiveFromDate] datetime 
[EffectiveToDate] datetime 
[ModifiedDate] datetime

感谢您的帮助

3 个答案:

答案 0 :(得分:1)

使用您在评论中发布的表格结构。

Id Uniqueidentifier Code varchar(255) 
Question varchar(500) 
EffectiveFromDate datetime 
EffectiveToDate datetime 
ModifiedDate datetime

如果您想在两个日期之间提出有效问题:

Declare @DatetimeVar1 as Datetime = '2015-04-13 00:00:00'
Declare @DatetimeVar2 as Datetime = '2015-04-14 00:00:00'

Select * from Questions
where EffectiveFromDate between @DateTimeVar1 and @DateTimeVar2
or EffectiveToDate between @DateTimeVar1 and @DateTimeVar2

这将检查EffectiveFromDate或EffectiveToDate是否在您查询的2个日期之间。

答案 1 :(得分:0)

当你的问题传达给我时,试试这个并告诉我你的要求是否不同。

您需要传递DateTime类型的列名进行比较。

SELECT id, question, description FROM Questions
WHERE Id=YourID AND dateColumn between EffectiveFromDate and EffectiveToDate

答案 2 :(得分:0)

首先,您需要了解 BETWEEN

  

“Sql Between”指定要测试的范围。

语法:

select * from table_name
where
test_expression  BETWEEN begin_expression AND end_expression
  

test_expression是要在定义的范围内测试的表达式   begin_expression和end_expression。 test_expression必须相同   数据类型为begin_expression和end_expression。

     

begin_expression是否为任何有效表达式。 begin_expression必须是相同的数据类型   同时作为test_expression和end_expression。

     

end_expression是否为任何有效表达式。 end_expression必须是   与test_expression和begin_expression相同的数据类型。

     

和使徒行传   作为占位符,表示test_expression应该在   范围由begin_expression和end_expression指示。

所以, 对

SELECT id, question, description
from Questions
where id between EffectiveFromDate and EffectiveToDate

id,EffectiveFromDate,EffectiveToDate必须是相同的数据类型

我想,它不在。 希望您尝试在特定日期选择所有id

所以你需要尝试:

declare @startdate as date='01/02/2014'
declare @enddate as date='01/02/2015'

SELECT id, question, description
    from Questions
    where Cast(EffectiveFromDate as date) >=cast(@startdate as date)
and Cast(EffectiveToDate as date)<=cats(@enddate as date)