Frage 1
Ich arbeite mit einem System, in dem das Datum als Ganzzahl (tatsächliche Zahl (8,0)) gespeichert ist, und ich habe festgestellt, dass andere Systeme das Datum auch als int speichern, z. B. Cisco in diesem Thread . Beispiel
20120101 -- 01 Jan 2012
Gibt es einen Vorteil, das numerische Datumssystem beizubehalten und SQL Datetime nicht zu verwenden?
Frage 2
Jetzt versuche ich, das numerische Datum zu durchlaufen, um Kunden zwischen zwei Daten zu finden. Wenn das start
und enddate
zwei Monate umfasst, erhalte ich Tausende von Datensätzen anstelle von nur 60. Beispiel:
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
Dadurch werden 8931 Datensätze anstelle von 60 abgerufen. Gibt es eine bessere Möglichkeit, die obige Logik zu verbessern, sodass nur gültige Daten abgerufen werden? Ich habe IsDate und Unterabfragen ausprobiert, aber das hat nicht ganz effizient funktioniert.