SQL Server - Comparar fechas

 
Vista:

Comparar fechas

Publicado por Miguel (3 intervenciones) el 06/07/2007 19:27:03
Hola a todos, espero puedan ayudarme con esta inquietud.

Quisiera saber sin en SQL Server existe algo como "to_date" de Oracle. En realidad, necesito buscar unos registros pero comparando unas fechas.

Ejemplo:

select fecha_caja, forma_pago, moneda_pago, monto
from pagos
where forma_pago = 'CA'
and fecha_caja >= to_date('01-01-2007', 'dd-mon-yyyy')
and fecha_caja <= to_date('31-01-2007', 'dd-mon-yyyy')
order by fecha_caja;

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Comparar fechas

Publicado por Isaias (3308 intervenciones) el 06/07/2007 21:06:07
En SQL SERVER no requieres el TO_DATE, ya que las conversiones son IMPLICITAS, si manejas una fecha en un string y lo comparas contra un campo de tipo fecha, entonces la conversion es en AUTOMATICO.

Tu problema en realidad, es que las fechas las manejas en formato diferente a ANSI y una fecha '31-01-2007', para SQL SERVE, NO ES VALIDA

select isdate('31-01-2007')

Resultado = 0, falso que sea fecha.

Incluso, si intentaras utilizar CAST o CONVERT (que, supongo, es el comando TO_DATE en Oracle), te mandaria mensaje de error.

SELECT CAST('31-01-2007' AS DATETIME)

Msg 242, Level 16, State 3, Line 1
The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value.

¿Como resolverlo?, manejar siempre tus fecha en formato ANSI

yyyy-mm-dd hh: mm: ss, nnn

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar