2009-07-25 9 views

Répondre

17

Précision et gamme (donc, tout ;-P important)

De MSDN:

.NET System.DateTime

Le type de valeur DateTime représente les dates et heures avec des valeurs allant de 12:00: 00 minuit, le 1er janvier 0001 Anno Domini (ère commune) à 23:59:59 PM, 31 décembre 9999 AD (CE)

Les valeurs temporelles sont mesurées en unités de 100 nanosecondes appelées tiques, et une date donnée est le nombre de tiques depuis 12:00 minuit, le 1er Janvier, 0001 AD (CE) dans le calenda GregorianCalendar

Transact SQL datetime

date Plage: 1 Janvier 1753, jusqu'au 31 Décembre, 9999

Précision: arrondi à des incréments de .000, .003 ou .007 secondes

+0

excellent! Je veux écrire une fonction dans C# qui obtient un paramètre de type string et le convertit en datetime. Je veux sauvegarder la valeur de retour de la fonction dans DB. La fonction doit prendre en charge une chaîne vide et dans ce cas, elle doit renvoyer une valeur nulle. Mais null ne peut pas être inséré. Qu'est-ce qui ne va pas? – odiseh

+0

Probablement simplement que vous devez utiliser DBNull.Value dans le code .NET pour représenter la base de données null. –

+1

Il y a aussi l'aspect fuseau horaire - même si DateTime n'a pas de fuseau horaire associé, il peut * savoir * s'il est "local" ou UTC. –

11

Vous pouvez également utiliser datetime2 de SQL Server 2008. La pré Il y a aussi 100ns de précision. En fait, il a été introduit pour correspondre à la précision .NET DateTime.

datetime2 (Transact-SQL)

+0

Note: c'est avec la précision par défaut de datetime2 (il peut être réduit à la seconde précision). – user2864740

6

Oui.

Le C# équivalent du type datetime SQL est SqlDateTime

Ainsi, définir l'appel SQL (stockées avec des procs collection de paramètres bien sûr) à utiliser SQLDATETIME. L'avantage est que vous pouvez piéger toute erreur de débordement ou hors de portée en construisant la commande plutôt que lors de l'exécution du moteur de base de données.

Questions connexes