Discussione:
campo datetime senza l'orario
(troppo vecchio per rispondere)
s.net
2005-03-01 08:23:12 UTC
Permalink
mi stavo domandando se esiste il modo per impostare la
colonna datetime in modalità data pura....senza avere
anche l'orario....


grazie
Davide Mauri
2005-03-01 08:30:45 UTC
Permalink
Ciao s.net
Post by s.net
mi stavo domandando se esiste il modo per impostare la
colonna datetime in modalità data pura....senza avere
anche l'orario....
no, non è possibile :-(
Post by s.net
grazie
però si ti serve una mano sulla gestione delle date/ore puoi guardare qui:

http://blogs.ugidotnet.org/nettools/category/806.aspx
--
Davide Mauri
MCP. MCAD, MCDBA, MCT
www.davidemauri.it
Andrea Benedetti
2005-03-01 08:33:18 UTC
Permalink
Salve s.net,
Post by s.net
mi stavo domandando se esiste il modo per impostare la
colonna datetime in modalità data pura....senza avere
anche l'orario....
Se vuoi visualizzare un campo datetime senza la parte oraria puoi fare
qualcosa come:

select CAST (CONVERT(CHAR(8) , getdate() ,112) AS datetime)

declare @data datetime
set @data = '2004/08/30 12:45:52'
select @data as Data_con_orario

select CAST (CONVERT(CHAR(8) , @data ,112) AS datetime) as Data_senza_orario


Se invece intendi: può sql server memorizzare un datetime senza la parte
oraria?
La risposta è no. Al suo interno il campo manterrà sempre una valore orario
(che se non passato è uguale a 00:00:00)
Post by s.net
grazie
Prego,
Andrea
s.net
2005-03-01 10:04:15 UTC
Permalink
intanto grazie a tutti e tre per le risposte (purtroppo
negative), il fatto è che mi serviva proprio salvare la
data senza avere il fastidio dell'ora (00.00.00)....spero
che in Sql2005 abbiano modificato questa cosa, perchè
sarebbe molto utile.

grazie a tutti, cmq darò un occhio ai vari tips che mi
avete passato.

ciao
Lorenzo Benaglia
2005-03-01 10:18:36 UTC
Permalink
Post by s.net
intanto grazie a tutti e tre per le risposte (purtroppo
negative), il fatto è che mi serviva proprio salvare la
data senza avere il fastidio dell'ora (00.00.00)....
Ciao s.net,

ci spieghi qual è il "fastidio"?
Memorizzi la tua data insieme all'informazione oraria, ed in fase di lettura
la elimini (meglio se lato client oppure lato server castandola a stringa).
Post by s.net
spero
che in Sql2005 abbiano modificato questa cosa, perchè
sarebbe molto utile.
Nelle prime versioni interne (beta1 compresa) avevano previsto due data type
distinti per la memorizzazione delle date e delle ore, purtroppo basati sul
CLR.
I SQL Server MVPs si sono così inc@@@@ti per questa "feature" che allo stato
attuale non si sa se Microsoft intenderà mantenerli nella RTM... ;-)
Comunque hai ragione, sarebbe comodo avere due data type *nativi*
distinti...
Post by s.net
grazie a tutti, cmq darò un occhio ai vari tips che mi
avete passato.
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://mvp.support.microsoft.com
http://italy.mvps.org
IH870
2005-03-01 12:10:32 UTC
Permalink
Post by s.net
negative), il fatto è che mi serviva proprio salvare la
data senza avere il fastidio dell'ora (00.00.00)....
confondi la formattazione della data in output (che deve fare il client) con
la memorizzazione dell'informazione da parte del db.

l'unico problema che potresti avere è per join... ma è un altro discorso
Lorenzo Benaglia
2005-03-01 08:35:57 UTC
Permalink
Post by s.net
mi stavo domandando se esiste il modo per impostare la
colonna datetime in modalità data pura....senza avere
anche l'orario....
Ciao s.net,

no, attualmente SQL Server non dispone di un data type distinto per l'ora e
per la data, ma offre due data types per la memorizzazione delle date:
datetime e smalldatetime.

datetime
--------
Range di validità: 1 gennaio 1753 - 31 dicembre 9999 con una precisione pari
a 0.00333 secondi.
Bytes occupati: 8 (2 coppie di interi di 4 bytes)
- i primi 4 per la memorizzazione dei giorni prima o dopo l'1 gennaio 1900
- gli altri 4 per la memorizzazione dei millisecondi dopo la mezzanotte

smalldatetime
-------------
Range di validità: 1 gennaio 1900 - 6 giugno 2079 con una precisione al
minuto.
Bytes occupati: 4 (2 coppie di interi di 2 bytes)
- i primi 2 per la memorizzazione dei giorni dopo l'1 gennaio 1900
- gli altri 2 per la memorizzazione dei minuti dopo la mezzanotte

Come vedi le date sono memorizzate internamente come 2 coppie di interi.
Quella che tu vedi "nel db" non è altro che una formattazione di questi
interi effettuata dal client.
Per capire nel dettaglio come SQL Server gestisce le informazioni datetime,
leggi il seguente tip e gli articoli suggeriti:
http://italy.mvps.org/MVPs/lbenaglia/LorenzoBenaglia-Tip-FormatoDate.htm
Post by s.net
grazie
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://mvp.support.microsoft.com
http://italy.mvps.org
Loading...