Problema con tipo de dato DATETIME.

Para completar esta respuesta, encontré un sistema para seleccionar fechas con el LIKE, convertir la fecha en variable de caracteres...
@dia varchar(10)
set @dia = '12/07/2008'
SELECT ...
FROM pdaRealiza R INNER JOIN ...
WHERE (CONVERT(VARCHAR, R.fecha, 103) LIKE @dia)
R.Fecha es smalldatetime y el estilo 103 convierte las fechas a varchar con formato dd/mm/yyyy
a mi me funciona

1 respuesta

Respuesta
1
Ya hemos comentado por aquí, que es un ERROR GRAVE utilizar o tratar de utilizar las FECHAS con formatos no compatibles con la mayoría de los motores de bases de datos y este es ANSI:
YYYYMMDD HH:MM:SS, NNN
Por tanto, NUNCA se deberia utilizar LIKE o = para comparar campos tipo DATETIME, es mejor utilizar >= o <=
Tendré en cuenta la advertencia, veré si, en mi problema concreto, encuentro una solución como la que propones.
En todo caso no debe ser tan malo, en la ayuda del analizador de consultas sql dice:
"Se recomienda que utilice LIKE cuando busque valores datetime, porque las entradas datetime pueden contener distintas partes de fecha. Por ejemplo, si inserta el valor 19981231 9:20 en una columna denominada arrival_time, la cláusula WHERE arrival_time = 9:20 no puede encontrar una coincidencia exacta para la cadena 9:20 debido a que SQL Server convierte la entrada a ene 1, 1900 9:20a.m. Sí se encuentra una coincidencia, sin embargo, con la cláusula WHERE arrival_time LIKE '%9:20%'."
Pero muchas gracias por tu rápida respuesta,
Santiago

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas