Discussione:
Gestione centesimi nelle date
(troppo vecchio per rispondere)
Emanuel
2004-08-27 12:54:40 UTC
Permalink
Salve a tutti

volevo chiedere se e come fosse possibile gestire in un campo di tipo
DateTime anche i centesimi di secondo di un certo istante.
Fino ad ora, non li ho visti e venendo da un altro DBMS ho gestito i
centesimi in un loro campo apposito con aggravio nel codice del programma.

Grazie
Lorenzo Benaglia
2004-08-27 13:12:17 UTC
Permalink
Post by Emanuel
volevo chiedere se e come fosse possibile gestire in un campo di tipo
DateTime anche i centesimi di secondo di un certo istante.
Fino ad ora, non li ho visti e venendo da un altro DBMS ho gestito i
centesimi in un loro campo apposito con aggravio nel codice del programma.
Ciao Emanuel,

prima di tutto leggi il seguente tip e gli articoli segnalati:
http://italy.mvps.org/MVPs/lbenaglia/LorenzoBenaglia-Tip-FormatoDate.htm

I Books Online riportano:

"datetime

Date and time data from January 1, 1753 through December 31, 9999, to an
accuracy of one three-hundredth of a second (equivalent to 3.33 milliseconds
or 0.00333 seconds). Values are rounded to increments of .000, .003, or .007
seconds, as shown in the table."

Quindi per visualizzare i millisecondi della parte oraria di una data è
sufficiente scegliere una formattazione che permetta di visualizzarli
tramite la funzione CONVERT:

SELECT CONVERT(varchar(23), GETDATE(), 121) DataOraConMillisecondi
GO

/* Output:

DataOraConMillisecondi
-----------------------
2004-08-27 15:08:26.793

(1 row(s) affected)

*/

Se ti interessa recuperare solo i millisecondi puoi ricorrere alla funzione
DATEPART:

SELECT DATEPART(millisecond, GETDATE()) Millisecondi
GO

/* Output:

Millisecondi
------------
503

(1 row(s) affected)

*/

Trovi tutti i dettagli sui Books Online.
Post by Emanuel
Grazie
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://mvp.support.microsoft.com
http://italy.mvps.org
Andrea Benedetti
2004-08-27 13:15:03 UTC
Permalink
Salve,
Post by Emanuel
Salve a tutti
volevo chiedere se e come fosse possibile gestire in un campo di tipo
DateTime anche i centesimi di secondo di un certo istante.
Fino ad ora, non li ho visti e venendo da un altro DBMS ho gestito i
centesimi in un loro campo apposito con aggravio nel codice del programma.
Forse ho capito male la domanda... ma il campo dateTime gestisce già quello
che chiedi.
Dai booksonline:
"Date and time data from January 1, 1753 through December 31, 9999, to an
accuracy of one three-hundredth of a second (equivalent to 3.33 milliseconds
or 0.00333 seconds)."

Prova da query analyzer (e non su Entreprise Manager perchè non li vedi...):

select getdate()
select DATEPART (ms , getdate())
Post by Emanuel
Grazie
Prego,
Andrea
Emanuel
2004-08-30 08:36:57 UTC
Permalink
Ringrazio Lorenzo e Andrea per le risposte che mi hanno aiutato a capire
meglio la gestione delle date.
Grazie a ciò penso di aver isolato il mio problema che comunque rimane tale,
cioè è al momento dell'inserimento che i millisecondi non vengono
memorizzati e dentro gli istanti caricati trovo sempre i millisecondi a
zero.
Io inserisco i dati nella mia tabella in un programma C++ con un INSERT il
cui parametro del campo è valorizzato come :
"EncodeDate(RecAl.data.da_year, RecAl.data.da_mon, RecAl.data.da_day) +
EncodeTime(RecAl.ora.ti_hour, RecAl.ora.ti_min, RecAl.ora.ti_sec,
RecAl.ora.ti_hund*10);"

In debug io vedo il campo RecAl.ora.ti_hund correttamente valorizzato con i
centesimi, ma poi nella tabella del DB trovo sempre 0 come millesimi.

Dove sbaglio ?
Grazie di nuovo
Lorenzo Benaglia
2004-08-30 10:03:37 UTC
Permalink
Post by Emanuel
Io inserisco i dati nella mia tabella in un programma C++ con un
"EncodeDate(RecAl.data.da_year, RecAl.data.da_mon, RecAl.data.da_day)
+ EncodeTime(RecAl.ora.ti_hour, RecAl.ora.ti_min, RecAl.ora.ti_sec,
RecAl.ora.ti_hund*10);"
Ciao Emanuel,

come accedi al DBMS? Utilizzi ADO?
Se la risposta è affermativa prova a leggere questo post:
http://tinyurl.com/5gpca
Post by Emanuel
Grazie di nuovo
Prego.

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