>Ciao a tutti,
Ciao!
>come posso fare in modo che se startDate < endDate mi vengano
>creati X differenti appuntamenti, uno per ogni giorno compreso
>tra starDate e endDate??
Puoi avere due approcci, uno, lasciando l'inserimento così come ce lo proponi ed eseguendo un ciclo lato applicazione (diciamo dal business layer) oppure puoi decidere di effettuare un ciclo direttamente sulla stored procedure. Per il secondo caso eccoti un esempio:
USE tempdb;
GO
-- Creo la tabella Agenda (fittizia)
CREATE TABLE Agenda
(
id int identity(1,1)
, descrizione varchar(20) NOT NULL
, data smalldatetime NOT NULL
, constraint pk_agenda primary key clustered
(
id
)
)
DECLARE @DaData smalldatetime
, @AData smalldatetime
SET @DaData = '20080101'
SET @AData = '20080110'
-- ciclo per la data
WHILE @DaData <= @AData
BEGIN
INSERT INTO Agenda (descrizione, data)
VALUES ('prova', @DaData)
-- con la dateadd aggiungo un giorno
SET @DaData = DATEADD(day,1,@DaData)
END
-- risultati
SELECT * FROM Agenda
/*
id descrizione data
----------- -------------------- -----------------------
1 prova 2008-01-01 00:00:00
2 prova 2008-01-02 00:00:00
3 prova 2008-01-03 00:00:00
4 prova 2008-01-04 00:00:00
5 prova 2008-01-05 00:00:00
6 prova 2008-01-06 00:00:00
7 prova 2008-01-07 00:00:00
8 prova 2008-01-08 00:00:00
9 prova 2008-01-09 00:00:00
10 prova 2008-01-10 00:00:00
*/
-- pulizia
--DROP TABLE Agenda
Personalmente preferisco demandare al business layer un'operazione come questa. Ma dipende anche dalle tue esigenze. All'interno dell'esempio ho utilizzato la funzione DATEADD, che puoi trovare sui BOL all'indirizzo http://msdn2.microsoft.com/en-us/library/ms186819.aspx
>
>Grazie
di nulla!
Alx81 =)
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org