353 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
1.976 messaggi dal 27 luglio 2005
Contributi
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
http://www.hotelsole.com - http://www.hotelsole.com/asql/index.php

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.