SQL selezione Datatime maggiore o minori

giovedì 23 agosto 2007 - 12.01

Danielef Profilo | Newbie

Ciao a tutti
sto facendo un piccolo script che dovrebbe seleziona dei periodi in una tabella sql

nella tabella sono presenti due campi
datainizio
datafine
entrambi datetime

nell'inserimento di nuovi record la data viene convertita tramite funzione in formato datatime.

quando vado a fare la selezione di un determinato periodo , mi serve tirare fuori tutti i record compresi da data inizio e datafine.

ho notato che se nei parametri passo il periodo uguale a quello inserito per data inzio e data fine mi viene dato il record
ma se è compreso all'interno del periodo inserito nulla......vi faccio un esempio


se nel record è inserito in datainzio 29/07/1982 e data fine 29/07/1983 ...
se nella query passo i periodi come sopra il record esce fuori
ma se nei parametri passo come datainizio= 29/10/1982 e data fine 29/05/1983 il record non esce fuori
la mia clausa sql è questa

where (periodi_prenotazione.Datainizio >= @datainizio) AND (periodi_prenotazione.datafine <= @datafine)


Grazie
Daniele

Wamba Profilo | Expert

>se nel record è inserito in datainzio 29/07/1982 e data fine
>29/07/1983 ...
>se nella query passo i periodi come sopra il record esce fuori
>ma se nei parametri passo come datainizio= 29/10/1982 e data
>fine 29/05/1983 il record non esce fuori
>la mia clausa sql è questa
>
>where (periodi_prenotazione.Datainizio >= @datainizio) AND
>(periodi_prenotazione.datafine <= @datafine)

Forse non ho capito ma:

Record:
periodi_prenotazione.DataInizio = 29/07/1982
periodi_prenotazione.datafine = 29/07/1983
Parametri
@DataInizio = 29/07/1982
@datafine = 29/07/1983

(periodi_prenotazione.Datainizio >= @datainizio) AND (periodi_prenotazione.datafine <= @datafine)
(29/07/1982 >= 29/07/1982)AND(29/07/1983 <= 29/07/1983)
(TRUE)AND(TRUE) = TRUE

Secondo caso
Record:
periodi_prenotazione.DataInizio = 29/07/1982
periodi_prenotazione.datafine = 29/07/1983

Parametri
@DataInizio = 29/10/1982
@datafine = 29/05/1983

(periodi_prenotazione.Datainizio >= @datainizio) AND (periodi_prenotazione.datafine <= @datafine)
(29/07/1982 >= 29/10/1982)AND(29/07/1983 <= 29/05/1983)
(FALSE) AND (FALSE) = FALSE

Non riesco a capire il problema...

-----------------------------------------------------------
Solo chi ha il Caos dentro può generare una stella danzante
Wamba

Danielef Profilo | Newbie

ok, molto probabilmente non mi sono spiegato bene

quando faccio
datainzio =29/07/1982
datafine = 29/07/1983

deve uscire come risultati tutti i record con la data inzio uguale o maggiore di quella indicata e i record data fine inferiore o uguale a quella indicata..

invece mi esce solo i record uguali a datainizio e datafine..

capito?

Wamba Profilo | Expert

Mi rifaresti l'esempio di cui sopra?
Controlla il formato delle date americano/italiano ecc Prova a fare un SET DATEFORMAT DMY o come prefersci in modo esplicito per evitare questi problemi, i parametri e i campi di che tipo sono?
-----------------------------------------------------------
Solo chi ha il Caos dentro può generare una stella danzante
Wamba
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5