Discussione:
Query con date -senza minuti-
(troppo vecchio per rispondere)
Drizzt
2006-11-30 15:55:12 UTC
Permalink
Oggi non e' giornata, evidentemente.


Ho un campo data in cui memorizzo una data completa (giorno ed ora); mi
serve cosi' perche' devo poter visualizzare anche l'ora in cui c'e'
stato un determinato evento.

Pero'...devo poter fare una query che tiri fuori tutti i record di un
dato giorno. E non ci riesco!!! (e non mi viene proprio in mente, e
l'ho gia' fatto altre decine di volte...c'ho un lapsus :-\ )


Grazie a tutti per l'eventuale aiuto :-)
Albe V°
2006-11-30 16:04:13 UTC
Permalink
Post by Drizzt
Oggi non e' giornata, evidentemente.
Ho un campo data in cui memorizzo una data completa (giorno ed ora); mi
serve cosi' perche' devo poter visualizzare anche l'ora in cui c'e'
stato un determinato evento.
Pero'...devo poter fare una query che tiri fuori tutti i record di un
dato giorno. E non ci riesco!!! (e non mi viene proprio in mente, e
l'ho gia' fatto altre decine di volte...c'ho un lapsus :-\ )
Ovviamente la sintassi dipende dal db, e quindi, non avendolo tu
indicato, solo Otelma potrà aiutarti.
Indicativamente, diciamo che puoi usare il between fra mezzanotte e
mezzanotte, oppure il Datepart e usare solo le parti della data, oppure
il Datediff da mezzogiorno, oppure (solo per Sql-Server) puoi innestare
due convert in cui quello interno esporta verso un formato senza ora.

ciao

Alberto
--
Fabio Fazio: Se siamo alleati come mai nei nostri bar si vende Coca
Cola e nei bar americani non si vende l'amaretto di Saronno?
Drizzt
2006-11-30 16:06:55 UTC
Permalink
Post by Albe V°
Post by Drizzt
Oggi non e' giornata, evidentemente.
Ho un campo data in cui memorizzo una data completa (giorno ed ora); mi
serve cosi' perche' devo poter visualizzare anche l'ora in cui c'e'
stato un determinato evento.
Pero'...devo poter fare una query che tiri fuori tutti i record di un
dato giorno. E non ci riesco!!! (e non mi viene proprio in mente, e
l'ho gia' fatto altre decine di volte...c'ho un lapsus :-\ )
Ovviamente la sintassi dipende dal db, e quindi, non avendolo tu
indicato, solo Otelma potrà aiutarti.
Ma non siamo sul NG di Sql Server?
Oggi sono cosi' tanto rinco da aver anche sbagliato NG?
Albe V°
2006-11-30 16:13:16 UTC
Permalink
Post by Drizzt
Ma non siamo sul NG di Sql Server?
Oggi sono cosi' tanto rinco da aver anche sbagliato NG?
Sono io quello così rincoglionito.
Pensavo di avere fatto click sul NG di VisualBasic, e invece ero in
quello di Sql-Server...

Ciao

Alberto
--
Il tempo e la pazienza possono più della forza o della rabbia
Marcello
2006-11-30 16:17:18 UTC
Permalink
Post by Albe V°
Ovviamente la sintassi dipende dal db, e quindi, non avendolo tu
indicato, solo Otelma potrà aiutarti.
Ciao Albe.
Beh, oltre a Otelma tutti quelli che sanno che questo ng è dedicato a
SQL Server possono provare ad azzardare una risposta e chi non lo sa
potrebbe ipotizzare un responso ansi basato sul nome del ng... :-D
Post by Albe V°
Indicativamente, diciamo che puoi usare il between fra mezzanotte e
mezzanotte,
Già questo è ANSI! :-D
Purtroppo il between comprende gli estremi e è quindi molto pericoloso a
meno di non valorizzarlo alla maniera proposta da Sandro [ma con qualche
correzione, adesso lo sgrido :-D]
Post by Albe V°
oppure il Datepart e usare solo le parti della data, oppure
il Datediff da mezzogiorno, oppure (solo per Sql-Server)
Qui il rischio è quello di ammazzare ogni eventuale indice, queste
tecniche andrebbero sempre evitate.
Post by Albe V°
puoi innestare
due convert in cui quello interno esporta verso un formato senza ora.
Qui mi trovi daccordo! :-D
Post by Albe V°
ciao
Alberto
--
Marcello Poletti
Dingo&Epomops
Microsoft MVP - SQL Server
http://www.dingoepomops.it
http://blogs.dotnethell.it/epomops/
Marcello
2006-11-30 16:05:12 UTC
Permalink
Post by Drizzt
Oggi non e' giornata, evidentemente.
Ciao, succede...
Post by Drizzt
Ho un campo data in cui memorizzo una data completa (giorno ed ora); mi
serve cosi' perche' devo poter visualizzare anche l'ora in cui c'e'
stato un determinato evento.
Mi sembra più che legittimo.
Post by Drizzt
Pero'...devo poter fare una query che tiri fuori tutti i record di un
dato giorno. E non ci riesco!!! (e non mi viene proprio in mente, e
l'ho gia' fatto altre decine di volte...c'ho un lapsus :-\ )
Grazie a tutti per l'eventuale aiuto :-)
marc.
--
Marcello Poletti
Dingo&Epomops
Microsoft MVP - SQL Server
http://www.dingoepomops.it
http://blogs.dotnethell.it/epomops/
Sandro Bizioli
2006-11-30 16:04:00 UTC
Permalink
Post by Drizzt
Pero'...devo poter fare una query che tiri fuori tutti i record di
un dato giorno. E non ci riesco!!! (e non mi viene proprio in
mente, e l'ho gia' fatto altre decine di volte...c'ho un lapsus
use tempdb
set nocount on
-- Creo la tabella
create table myTable
(
Id int,
miaData smalldatetime
)

-- Inserisco alcuni valori
insert into myTable values(1, '20061128 12:53')
insert into myTable values(1, '20061130 11:52')
insert into myTable values(1, '20061129 02:00')
insert into myTable values(1, '20061128 06:24')
insert into myTable values(1, '20061129 17:31')
insert into myTable values(1, '20061130 16:15')

-- Estraggo ad esempio tutti i record del giorno 29/11/2006
Select
id,
miaData
From mytable
Where miaData between '20061129' and '20061129 23:59'

-- Elimino la tabella
drop table myTable


/* Output
id miaData
----------- -----------------------
1 2006-11-29 02:00:00
1 2006-11-29 17:31:00
*/
--
(Postate i comandi DDL per la creazione delle tabelle)
===================================
Sandro Bizioli
http://blogs.dotnethell.it/sandro/
===================================
Marcello
2006-11-30 16:21:32 UTC
Permalink
Post by Sandro Bizioli
Where miaData between '20061129' and '20061129 23:59'
Ciao Sandro,

Occhio al resto di data e ora.
Indipendentemente dal fatto che uno archivi la data con dettagli fino
all'ora o ai minuti o ai secondi il tipo datetime va trattato per le sue
possibilità intrinseche [a meno della presenza di check].
Quindi quella where, a mio avviso, va sempre scritta "senza rischi",
alla maniera di:

Where miaData between '20061129' and '20061129 23:59:59:997'

marc.
--
Marcello Poletti
Dingo&Epomops
Microsoft MVP - SQL Server
http://www.dingoepomops.it
http://blogs.dotnethell.it/epomops/
Marcello
2006-11-30 16:28:54 UTC
Permalink
Post by Marcello
tipo datetime va trattato per le sue
Ma qui parlavamo di smalldatetime e la risposta di Sandro è perfetta! :-D

rimarc.

Grazie a Lorenzo per la segnalazione
--
Marcello Poletti
Dingo&Epomops
Microsoft MVP - SQL Server
http://www.dingoepomops.it
http://blogs.dotnethell.it/epomops/
Davide Mauri
2006-11-30 21:26:54 UTC
Permalink
Post by Drizzt
Oggi non e' giornata, evidentemente.
Ho un campo data in cui memorizzo una data completa (giorno ed ora); mi
serve cosi' perche' devo poter visualizzare anche l'ora in cui c'e'
stato un determinato evento.
Pero'...devo poter fare una query che tiri fuori tutti i record di un
dato giorno. E non ci riesco!!! (e non mi viene proprio in mente, e
l'ho gia' fatto altre decine di volte...c'ho un lapsus :-\ )
Grazie a tutti per l'eventuale aiuto :-)
Ciao Drizzt

ho scritto un articolo in proposito:

http://blogs.ugidotnet.org/nettools/articles/9560.aspx

ed inoltre il 5 Dicembre terro un webcast dove parlerò *anche* di questi
problemi:

http://blogs.ugidotnet.org/nettools/archive/2006/11/18/54985.aspx

ti aspetto! (E porta Guenhwyvar!!!!! :-D)
--
Davide Mauri
Microsoft MVP - SQL Server
MCP, MCAD, MCDBA, MCT
http://www.davidemauri.it
http://blogs.ugidotnet.org/netTools
http://weblogs.sqlteam.com/dmauri/

UGISS: User Group Italiano Sql Server
http://www.ugiss.org
Continua a leggere su narkive:
Loading...