View Full Version : datas em consultas sql


wrproject
10-01-2008, 14:24
boas,como faco uma instrucao em sql para listar registos entre uma data e outra?
agradeco a vossa ajuda

mascker
10-01-2008, 15:16
Boas,

$sql = "SELECT * FROM tabela WHERE data=>'2006-10-12' AND data <='2007-12-12' ";


Saudações

Lpes
10-01-2008, 15:18
SELECT atributo FROM tabelaWHERE atributoBETWEEN xAND y

Isto é o standart sql.
Penso que em quase todas as implementações do mesmo bastará um select atributo from tabela where atributo>x and atributo<y.
Não sei se o BETWEEN x AND y estará implementado em todos os sistemas(no oracle está se não me engano).

mcog_blaster
10-01-2008, 15:40
Boas,

$sql = "SELECT * FROM tabela WHERE data=>'2006-10-12' AND data <='2007-12-12'";


Saudações

So uma pequena correçao ja que esse query pode nao retornar correctamente os valors esperados.
data=>'2006-10-12' AND data <='2007-12-12 23:59:59'

mascker
10-01-2008, 18:30
So uma pequena correçao ja que esse query pode nao retornar correctamente os valors esperados.
data=>'2006-10-12' AND data <='2007-12-12 23:59:59'

Boas,

Isso depende do campo que está na base de dados se é date ou datetime.

Saudações,

reise
10-01-2008, 22:15
Essas datas não deviam estar inseridas dentro de um to_date()?
Em Oracle pelo menos devia ser assim:
SELECT * FROM tabela WHERE data between to_date('2008-01-09 12:25:25','YYYY-MM-DD HH24:MI:SS') AND to_date('2008-01-10 12:25:25','YYYY-MM-DD HH24:MI:SS')

mascker
10-01-2008, 22:32
Boas,

Em Oracle não devia ser assim já que ele não quer converter nenhum valor.

A função to_date() é utilizada para converter um valor do tipo string para um valor do tipo date.

Em MySQL também existe essa função mas com o nome str_to_date().


Saudações

reise
10-01-2008, 22:43
presumi que a coluna data era do tipo DATE. Se não usares o to_date nesse caso ele converte implicitamente com a máscara que achar que é, e muitas vezes não é! :)
No meu trabalho já aconteceu tudo funcionar bem cá, mas quando isntalarm aquilo nos EUA começou a dar erros de data porque uma coluna que devia ser DATE era VARCHAR2 e ninguém tinha reparado.