问题 1
我正在使用一个将日期存储为整数(实际上是numeric(8,0))的系统,并且我注意到其他系统也将日期存储为整数,例如此帖子中的思科。示例
20120101 -- 01 Jan 2012
保留数字日期系统而不使用SQL Datetime有什么优势吗?
问题2
现在我正在尝试循环遍历数字日期以查找两个日期之间的客户。如果start
和enddate
跨越两个月,我会得到成千上万条记录,而不仅仅是60条。例如:
create table #temp1(day int,capacity int) /* just a temp table */
declare @start int
declare @end int
set @start=20111201
set @end = 20120131
while (@start <= @end)
Begin
insert into #temp1 /* I am storing things in #temp table so data looks pretty */
exec usp_GetDailyCap @date1= @start
set @start = @start + 1;
end
select * from #temp1
这个逻辑会拉取8931条记录,而不是60条。有没有更好的方法来改进上述逻辑,以便只拉取有效的日期?我尝试了IsDate和子查询,但效率不高。