Posterior a investigar con expertos en este tema, programadores de diversas áreas y profesores dimos con la respuesta al dilema y la plasmamos en este post.
Solución:
Cuando se trata de fechas en SQL Server, el formato ISO-8601 es probablemente la mejor opción, ya que funciona independientemente de la configuración de idioma y cultura.
Para INSERTAR datos en una tabla de SQL Server, no necesita ningún código de conversión ni nada en absoluto, solo especifique sus fechas como cadenas literales
INSERT INTO MyTable(DateColumn) VALUES('20090430 12:34:56.790')
y tu estas listo.
Si necesita convertir una columna de fecha al formato ISO-8601 en SELECT, puede usar el código de conversión 126 o 127 (con información de la zona horaria) para lograr el formato ISO.
SELECT CONVERT(VARCHAR(33), DateColumn, 126) FROM MyTable
debería darte:
2009-04-30T12:34:56.790
Esta
SELECT CONVERT(NVARCHAR(30), GETDATE(), 126)
producirá esto
2009-05-01T14:18:12.430
Y se pueden encontrar más detalles sobre esto en MSDN.
Si solo necesita generar la fecha en formato ISO8601, incluida la Z final, y tiene al menos SQL Server 2012, entonces puede usar FORMAT
:
SELECT FORMAT(GetUtcDate(),'yyyy-MM-ddTHH:mm:ssZ')
Esto te dará algo como:
2016-02-18T21:34:14Z
Tal como lo señala @Pxtl en un comentario, FORMAT puede tener implicaciones en el rendimiento, un costo que debe considerarse en comparación con la flexibilidad que brinda.
Te mostramos comentarios y valoraciones
Al final de la web puedes encontrar las ilustraciones de otros administradores, tú igualmente tienes la habilidad insertar el tuyo si te gusta.