sql >> Base de Datos >  >> RDS >> Sqlserver

Imposible almacenar ciertos formatos de fecha y hora en SQL Server

SQL Server no almacena un DateTime en cualquier formato de cadena:se almacena como un valor numérico de 8 bytes.

Las diversas configuraciones (idioma, formato de fecha) solo influyen en cómo DateTime se le muestra en SQL Server Management Studio, o cómo se analiza cuando intenta convertir una cadena en un DateTime .

SQL Server admite muchos formatos; consulte los MSDN Books Online sobre CAST y CONVERTIR . La mayoría de esos formatos son dependientes en qué configuraciones tiene, por lo tanto, estas configuraciones pueden funcionar algunas veces, y otras veces no.

La forma de solucionar esto es usar el formato de fecha ISO-8601 que es compatible con SQL Server:este formato funciona siempre - independientemente de la configuración de formato de fecha e idioma de SQL Server.

El formato ISO-8601 es compatible con SQL Server viene en dos sabores:

  • YYYYMMDD solo para fechas (sin parte de la hora) - nota aquí:¡sin guiones! , eso es muy importante! YYYY-MM-DD es NO independiente de la configuración de formato de fecha en su SQL Server y NO trabajar en todas las situaciones!

o:

  • YYYY-MM-DDTHH:MM:SS para fechas y horas - nota aquí:este formato tiene guiones.

Esto es válido para SQL Server 2000 y posteriores.

Si utiliza SQL Server 2008 y DATE tipo de datos (solo DATE - no DATETIME !), entonces también puede usar el YYYY-MM-DD y eso también funcionará con cualquier configuración en su SQL Server.

No me preguntes por qué todo este tema es tan complicado y algo confuso, así es como es. Pero con el YYYYMMDD formato, debería estar bien para cualquier versión de SQL Server y para cualquier configuración de idioma y formato de fecha en su SQL Server.