Array
(
)

Select com filtro de datas não funciona

Pjava
   - 05 ago 2011

Esse select não funciona. Porque?  

select convert(varchar(10),data,103)data from opera

where convert(varchar(10),data,103) >= '01/11/2010'

Eu dei um convert, porque a data aprece nesse formato: yyyy-mm-dd

Melantonio
|
MVP
Pontos: 300
    05 ago 2011

Cara esse filtro não funciona porque vc está convertendo a data para varchar, faz a comparação sem esse convert.

Abs

Melantonio
|
MVP
Pontos: 300
    05 ago 2011

Da para usar o convert na condição, mas vc não consegue comparar se uma string é maior com a outra. Então vc só pode usar o igual "="

abs

Pjava
   - 08 ago 2011

Então, mas se eu faço assim funciona:

select convert(varchar(10),data,103) from opera where data >= '01/11/2010'

Mas assim não funciona

select convert(varchar(10),data,103) from opera where data >= '01/11/2010' and data <= '28/02/2011'

Dá esse erro aí abaixo

Msg 242, Level 16, State 3, Line 4

The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value.

Pjava
   - 08 ago 2011

Fiz assim, mas ele está trazendo datas até 01/03/2011 e não até 28/02/2011  

select contrato,convert(varchar(10),data,103) from opera

where data >= CONVERT(SMALLDATETIME,'2010-11-01 00:00:00.000') and data <= CONVERT(SMALLDATETIME,'2011-02-28 23:59:59.999')

order by data

Emerson
   - 08 ago 2011

select convert(varchar(10),data,103) from opera where data >= '11/01/2010' and data <= '02/28/2011'


Pjava
   - 08 ago 2011

Só para finalizar esse tópico, o Order By não funciona. Porque? Em nenhuma dessas opções acima, nenhuma mesmo.

Wilson Paulista...!!!
   - 08 ago 2011

Coloque
#Código

ORDER BY 2 { 2° coluna }


Espero ter colaborado.