Comando sql: algo curioso o estoy mal en algo

21/08/2007 - 17:27 por Luis Mata | Informe spam
print dateadd(dd,-3,getdate())
DECLARE @fecha datetime
SET @fecha = dateadd(dd,-3,getdate())
select * from sitabcct
where dtregdoc between @fecha and convert(char(10),GETDATE(),112)
order by dtregdoc

resultado

60014625 2007-08-20 00:00:00.000 242.58
60014626 2007-08-20 00:00:00.000 1890.49
60014627 2007-08-20 00:00:00.000 19276.93
60014643 2007-08-21 00:00:00.000 160.38
60014644 2007-08-21 00:00:00.000 9762.65
60014645 2007-08-21 00:00:00.000 7618.01

select * from sitabcct
where dtregdoc between '2007-08-18' and convert(char(10),GETDATE(),112)
order by dtregdoc

resultado:
60047052 2007-08-18 00:00:00.000 490.20
60014618 2007-08-18 00:00:00.000 295.72
60014619 2007-08-18 00:00:00.000 151.73
60014625 2007-08-20 00:00:00.000 242.58
60014626 2007-08-20 00:00:00.000 1890.49
60014627 2007-08-20 00:00:00.000 19276.93
60014643 2007-08-21 00:00:00.000 160.38
60014644 2007-08-21 00:00:00.000 9762.65
60014645 2007-08-21 00:00:00.000 7618.01

se dan cuenta o estoy viendo mal, la variable de la primera sentencia toma
la fecha 18-08-2007 pero en la consulta coge desde el 20-08-2007.
en cambio en el segundo lo pongo defrente la fecha 18-08-2007 en el between
y ahi si me coge desde el 18-08-2007.

que pasa estoy cansado, algo hize mal haber.
 

Leer las respuestas

#1 Isaias
21/08/2007 - 17:40 | Informe spam
No utilices BETWEEN, es mejor:

WHERE fecha >= @fecha AND fecha <= @fecha
Saludos
IIslas


"Luis Mata" wrote:



print dateadd(dd,-3,getdate())
DECLARE @fecha datetime
SET @fecha = dateadd(dd,-3,getdate())
select * from sitabcct
where dtregdoc between @fecha and convert(char(10),GETDATE(),112)
order by dtregdoc

resultado

60014625 2007-08-20 00:00:00.000 242.58
60014626 2007-08-20 00:00:00.000 1890.49
60014627 2007-08-20 00:00:00.000 19276.93
60014643 2007-08-21 00:00:00.000 160.38
60014644 2007-08-21 00:00:00.000 9762.65
60014645 2007-08-21 00:00:00.000 7618.01

select * from sitabcct
where dtregdoc between '2007-08-18' and convert(char(10),GETDATE(),112)
order by dtregdoc

resultado:
60047052 2007-08-18 00:00:00.000 490.20
60014618 2007-08-18 00:00:00.000 295.72
60014619 2007-08-18 00:00:00.000 151.73
60014625 2007-08-20 00:00:00.000 242.58
60014626 2007-08-20 00:00:00.000 1890.49
60014627 2007-08-20 00:00:00.000 19276.93
60014643 2007-08-21 00:00:00.000 160.38
60014644 2007-08-21 00:00:00.000 9762.65
60014645 2007-08-21 00:00:00.000 7618.01

se dan cuenta o estoy viendo mal, la variable de la primera sentencia toma
la fecha 18-08-2007 pero en la consulta coge desde el 20-08-2007.
en cambio en el segundo lo pongo defrente la fecha 18-08-2007 en el between
y ahi si me coge desde el 18-08-2007.

que pasa estoy cansado, algo hize mal haber.






Preguntas similares