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

¿Qué configuraciones proporcionan el formato de fecha y hora predeterminado de SQL Server?

¡No hagas eso! No use cadenas en lugar de fechas y no use un formato de fecha o fecha y hora específico de la cultura, es una receta para el desastre.

SQL Server no tiene un "formato de fecha", solo formatos que usa para convertir fechas hacia y desde cadenas. Uno de ellos es el predeterminado, controlado por la intercalación del servidor. No puede asumir ni debe depender de una intercalación específica, por lo que debe evitar las conversiones siempre que sea posible. Además, pasar un valor de cadena puede evitar que SQL Server use índices en columnas de fecha porque tendría que convertir la cadena al tipo de columna subyacente.

Es mucho más fácil y seguro pasar fechas como variables o parámetros con tipo de fecha. Evita todo el lío de la conversión de esta manera, hacia y desde, y evita los ataques de inyección SQL.

No hay razón para pasar cadenas en lugar de fechas al servidor. Todos los clientes de SQL Server (incluido ADO.NET) le permiten ejecutar consultas parametrizadas. Los ORM como NHibernate y Entity Framework también generan consultas parametrizadas para columnas de fecha.

Siempre que necesite crear un literal de cadena, use uno de los formatos invariables como 20140913 o 2012-11-07T18:26:20

Puede obtener más información al respecto en Redacción de declaraciones T-SQL internacionales