2009-07-25 13 views

Respuesta

17

de precisión y alcance (así, todo ;-P importante)

De MSDN:

.NET System.DateTime

El tipo de valor DateTime representa fechas y horas con valores que van desde 12:00: 00 medianoche, 1 de enero, 0001 Anno Domini (Era común) hasta 11:59:59 PM, 31 de diciembre de 9999 AD (CE)

Los valores de tiempo se miden en unidades de 100 nanosegundos llamadas garrapatas, y una fecha en particular es el número de garrapatas desde 12:00 de la noche, 1 de enero de 0001 dC (CE) en el calenda GregorianCalendar

Transact SQL datetime

intervalo de fechas: 1 de enero de 1753, hasta el 31 de diciembre de 9999

Precisión: redondeado a incrementos de .000, .003, .007 segundos o

+0

¡excelente! Quiero escribir una función en C# que obtiene un parámetro de tipo cadena y convertirlo a fecha y hora. Quiero guardar el valor de retorno de la función en DB. La función debería ocuparse de una cadena vacía y en este caso debería devolver nulo. Pero null no se puede insertar. ¿Qué pasa? – odiseh

+0

Probablemente simplemente necesite usar DBNull.Value en el código .NET para representar la base de datos nula. –

+1

También está el aspecto de zona horaria: aunque DateTime no tiene una zona horaria asociada, * puede * saber si es "local" o UTC. –

11

también puede utilizar datetime2 de SQL Server 2008. La pre Cisión hay 100ns también. De hecho, se introdujo para que coincida con la precisión .NET DateTime.

datetime2 (Transact-SQL)

+0

Nota: eso es con la precisión predeterminada de datetime2 (se puede disminuir a segunda precisión). – user2864740

6

Sí.

El C# equivalente del tipo datetime SQL es SqlDateTime

Por lo tanto, definir la llamada SQL (procs almacenados con colección de parámetros, por supuesto) para utilizar SqlDateTime. Como ventaja, puede atrapar cualquier error de desbordamiento o fuera de rango que genere el comando en lugar del tiempo de ejecución desde el motor de la base de datos.