2009-07-25 15 views

risposta

17

precisione e la gamma (così, tutto importante ;-p)

Da MSDN:

.NET System.DateTime

Il tipo di valore DateTime rappresenta date e le ore con valori compresi da 12:00: 00 mezzanotte, 1 gennaio 0001 Anno Domini (Era Comune) fino alle 23:59:59, 31 dicembre 9999 DC (CE)

I valori di tempo sono misurati in unità di 100 nanosecondi chiamate zecche, e una data particolare è il numero di zecche dal 12:00 a mezzanotte, il 1 ° gennaio 0001 AD (CE) nella Calenda GregorianCalendar

Transact SQL datetime

Intervallo date: 1 ° gennaio 1753, fino al 31 dicembre 9999

Precisione: arrotondati a incrementi di .000, .003, .007 o secondi

+0

eccellente! Voglio scrivere una funzione in C# che ottiene un parametro di tipo string e lo converte in datetime. Voglio salvare il valore di ritorno della funzione in DB. La funzione dovrebbe occuparsi di una stringa vuota e in questo caso dovrebbe restituire null. Ma null non può essere inserito. Cosa c'è che non va? – odiseh

+0

Probabilmente semplicemente è necessario utilizzare DBNull.Value nel codice .NET per rappresentare il database null. –

+1

C'è anche l'aspetto fuso orario - anche se DateTime non ha un fuso orario associato, * può * sapere se è "locale" o UTC. –

11

È inoltre possibile utilizzare datetime2 di SQL Server 2008. La pre cisione c'è anche 100ns. In effetti, è stato introdotto per corrispondere alla precisione di DateTime .NET.

datetime2 (Transact-SQL)

+0

Nota: è con la precisione datetime2 predefinita (può essere ridotta alla seconda precisione). – user2864740

6

Sì.

Il C# equivalente di tipo SQL datetime è SqlDateTime

Quindi, definire la chiamata SQL (stored procedure con raccolta parametro ovviamente) da utilizzare SqlDateTime. A titolo di vantaggio è possibile intercettare eventuali errori di overflow o di intervallo che generano il comando piuttosto che al momento dell'esecuzione dal motore del database.

Problemi correlati