348 messaggi dal 13 febbraio 2004
Salve,
ho un problema....vorrei fare un confronto fra delle date presenti sul db e date che io compongo con parametri passati alla stored.
In particolare passo alla stored due interi anno e mese e vorrei filtrare tutti quei record con campi "dataInzio" e "datafine" che comprendono il mese che io ho passato.

per ora ho creato la data del primo e ultimo giorno del mese passato (tipo 2010-06-01 00:00:00 e 2010-06-30 00:00:00) e poi ho fatto:

where
NMS_assegnazioneCentroCosto_TB.assegnazioneCentroCosto_inizio<= convert(datetime, @giorno1,120)
and NMS_assegnazioneCentroCosto_TB.assegnazioneCentroCosto_finePrevista >= convert(datetime,@giornoUltimo,120)

solo ceh in questo modo tutte le date di inizio che però cominciano dopo l'1 e tutte le date che finiscono prima dell'ultimo giorno del mese vengono escluse
ritenete che sia il caso di considerare il primo giorno del mese sulla data inizio e l'ultimo sulla data fine? e come posso implementarlo?

spero di essere stata un pò chiara!

grazie cinzia

cinzia cipriano
salve Cinzia,
cinziacip wrote:
Salve,
ho un problema....vorrei fare un confronto fra delle date presenti sul db e date che io compongo con parametri passati alla stored. In particolare passo alla stored due interi anno e mese e vorrei filtrare tutti quei record con campi "dataInzio" e "datafine" che comprendono il mese che io ho passato.
per ora ho creato la data del primo e ultimo giorno del mese passato (tipo 2010-06-01 00 0 0 e 2010-06-30 00 0 0) e poi ho fatto: where
NMS_assegnazioneCentroCosto_TB.assegnazioneCentroCosto_inizio<= convert(datetime, @giorno1,120)
and
NMS_assegnazioneCentroCosto_TB.assegnazioneCentroCosto_finePrevista >= convert(datetime,@giornoUltimo,120)
solo ceh in questo modo tutte le date di inizio che però cominciano dopo l'1 e tutte le date che finiscono prima dell'ultimo giorno del mese vengono escluse
ritenete che sia il caso di considerare il primo giorno del mese sulla data inizio e l'ultimo sulla data fine? e come posso
implementarlo?
spero di essere stata un pò chiara!
grazie cinzia

personalmente opererei direttamente con le funzioni specifiche sulle data previste da SQL Server, similarmente a

SET NOCOUNT ON;
USE tempdb;
GO
CREATE TABLE dbo.t (
Id int NOT NULL IDENTITY,
dataInizio date NOT NULL,
dataFine date NOT NULL
);
GO
DECLARE @i int = 0;
WHILE @i < 200 BEGIN
INSERT INTO dbo.t VALUES (DATEADD(DAY, @i, GETDATE()), DATEADD(DAY, @i + 20, GETDATE()));
SET @i += 1;
END;
GO
DECLARE @parMese int = 7;
DECLARE @parAnno int = 2010;
SELECT *
FROM dbo.t t
WHERE (DATEPART(YEAR, t.dataInizio) = @parAnno AND DATEPART(MONTH, t.dataInizio) = @parMese)
OR (DATEPART(YEAR, t.dataFine) = @parAnno AND DATEPART(MONTH, t.dataFine) = @parMese)
GO
DROP TABLE dbo.t;

saluti

Andrea Montanari (Microsoft MVP - SQL Server)
http://www.asql.biz - http://italy.mvps.org
http://www.hotelsole.com - http://www.hotelsolericcione.de

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.
Community
Ultimi messaggi
UTENTI ONLINE
In primo piano

I più letti di oggi

Media
In evidenza
MISC