我有一个start_date和end_date。我想要得到这两个日期之间的日期列表。有人能帮我指出我的查询中的错误吗?
select Date,TotalAllowance
from Calculation
where EmployeeId=1
and Date between 2011/02/25 and 2011/02/27
这里Date是一个datetime变量。
我有一个start_date和end_date。我想要得到这两个日期之间的日期列表。有人能帮我指出我的查询中的错误吗?
select Date,TotalAllowance
from Calculation
where EmployeeId=1
and Date between 2011/02/25 and 2011/02/27
这里Date是一个datetime变量。
当前回答
我们可以使用between来显示两个日期数据,但这将搜索整个数据并进行比较,因此对于巨大的数据,它会使我们的过程变慢,所以我建议每个人都使用datediff:
qry = "SELECT * FROM [calender] WHERE datediff(day,'" & dt & "',[date])>=0 and datediff(day,'" & dt2 & "',[date])<=0 "
这里的日历是表,dt作为开始日期变量,dt2是结束日期变量。
其他回答
实际上,为了得到最准确的结果,所有sql日期都应该是yyyy-MM-dd格式。
两件事:
使用引号 确保包括最后一天(结束于24) 选择日期,总津贴 从计算 EmployeeId = 1 and "2011/02/25" <= Date and Date <= "2011/02/27"
如果Date为DateTime。
我倾向于以这种方式进行范围检查,因为它清楚地显示了下限和上限。请记住,日期格式在不同的文化中有很大的不同。所以你可能要确保它被解释为一个日期。使用DATE_FORMAT(日期,'Y/m/d')。
(提示:使用STR_TO_DATE和DATE_FORMAT来切换范例。)
Select
*
from
Calculation
where
EmployeeId=1 and Date between #2011/02/25# and #2011/02/27#;
如果日期在24小时内,从早上开始,到晚上结束,应该添加如下内容:
declare @Approval_date datetime
set @Approval_date =getdate()
Approval_date between @Approval_date +' 00:00:00.000' and @Approval_date +' 23:59:59.999'
试试这个:
select Date,TotalAllowance from Calculation where EmployeeId=1
and [Date] between '2011/02/25' and '2011/02/27'
日期值需要作为字符串输入。
为了确保您的SQL Server 2008及更高版本的查询能够适应未来,Date应该被转义,因为在以后的版本中它是一个保留字。
请记住,没有时间的日期将午夜作为默认值,因此这里可能没有正确的值。