我想知道在我的查询的两个日期范围内获取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
感谢您的帮助
答案 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)