Al convertir .NET DateTime (cuando es predeterminado (DateTime)) a SqlDateTime, siempre debo verificar si la fecha .NET está entre SqlDateTime.MinValue y SqlDateTime.MaxValue [o] ¿Hay una buena manera de hacerlo? para hacer esto..NET DateTime a SqlDateTime Conversión
Respuesta
¿Es posible que la fecha realmente esté fuera de ese rango? ¿Viene de la entrada del usuario? Si la respuesta a cualquiera de estas preguntas es sí, entonces siempre debe verificar; de lo contrario, está dejando su aplicación propensa al error.
Puede formatear la fecha para su inclusión en una sentencia SQL con bastante facilidad:
var sqlFormattedDate = myDateTime.Date.ToString("yyyy-MM-dd HH:mm:ss");
@ Winston: Sí, mi fecha de entrada puede ser nula en algún momento. – Sreedhar
@ Winston: Usted * no debe * formatear su fecha como una cadena para su inclusión en una declaración de SQL. Use SQL parametrizado con un parámetro fuertemente tipado en su lugar. – LukeH
Estoy de acuerdo con Lucas. ¿Qué sucede si nació en la "tabla" de "usuarios" del mes, en el año "drop"? (Hablando en serio, haz lo que dice Luke) –
Si usted está mirando para DBNULL, la conversión de una fecha y hora de SQL a un .NET DateTime no debería ser un problema. Sin embargo, puede encontrarse con problemas al convertir un .NET DateTime en un SQL DateTime válido.
SQL Server no reconoce las fechas anteriores al 1/1/1753. Ese es el año en que Inglaterra adoptó el Calendario Gregoriano. Por lo general, la comprobación de DateTime.MinValue es suficiente, pero si sospecha que los datos podrían tener años anteriores al siglo XVIII, debe realizar otra verificación o utilizar un tipo de datos diferente. (A menudo me pregunto qué usan los museos en sus bases de datos)
La comprobación de la fecha máxima no es realmente necesaria, SQL Server y .NET DateTime ambos tienen una fecha máxima de 31/12/9999 Puede ser una regla comercial válida pero no causará un problema
Recuerde también que las resoluciones [quantum of time] son diferentes.
http://msdn.microsoft.com/en-us/library/system.data.sqltypes.sqldatetime.aspx
SQL es 3.33 ms y uno .NET es de 100 ns.
en mi búsqueda para hacer esto con entitie, tropecé por aquí, simplemente con apretar de nuevo a publicar lo que he descubierto ...
cuando se utiliza EF4, la columna de fecha y hora "de un SQL" puede ser llenado desde DateTime de .NET usando BitConverter.
EntitieObj.thetime = BitConverter.GetBytes(DateTime.Now.ToBinary());
también el enlace de Fakrudeen me trajo más ... gracias.
-Para comparar sólo la parte de fecha, puede hacerlo:
var result = db.query($"SELECT * FROM table WHERE date >= '{fromDate.ToString("yyyy-MM-dd")}' and date <= '{toDate.ToString("yyyy-MM-dd"}'");
- 1. La conversión de DateTime a SqlDateTime es inexacta
- 2. Cómo convertir el valor SqlDateTime a .Net :: DateTime
- 3. conversión de .NET DateTime a JSON
- 4. NHibernate no persistirá DateTime SqlDateTime overflow
- 5. anulable DateTime conversión
- 6. cadena a la conversión DateTime en C#
- 7. Conversión de una cadena a DateTime
- 8. Convertir .NET Ticks a SQL Server DateTime
- 9. DateTime a javascript fecha
- 10. DateTime a unixtime sello en .net
- 11. .NET DateTime to String
- 12. .Net DateTime fiscal Quarter
- 13. Conversión SQL DateTime falla cuando no debería haber ninguna conversión
- 14. Conversión de DateTimeOffset a DateTime - pérdida de datos
- 15. Conversión de una cadena en formato ddMMyyyy a DateTime
- 16. Problema conversión de Ruby on Rails DateTime a NSDate
- 17. ¿La conversión a datetime falla solo en la cláusula WHERE?
- 18. Conversión de un número de 8 dígitos a DateTime Tipo
- 19. Conversión de cadena con desplazamiento UTC a un objeto datetime
- 20. DataContractJsonSerializer DateTime implícita conversión de zona horaria
- 21. conversión de pdf a xml usando .NET
- 22. .Net webApi ISO datetime e IE8
- 23. Parse CIM_DateTime to .Net DateTime
- 24. Las mejores prácticas de desbordamiento de Entity Framework y SqlDateTime
- 25. .NET 4.5 formato DateTime/error de conversión con cultura sorba superior
- 26. Cómo convertir DateTime? a DateTime
- 27. Analizando cadena ISO 8601 a DateTime en .NET?
- 28. convertir .NET DateTime objeto a objeto Javascript Fecha
- 29. ¿Cómo puedo obtener que Dapper asigne .net datetime a datetime2?
- 30. Marca de tiempo de Unix a .net DateTime
@JohnSaunders: Sí, es un poco exigente. – Will