Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Tiago_Ribeiro

Simples Comando SQL

Recommended Posts

Pessoal uma duvida..

 

preciso criar uma SQL que busca um determinado periodo..

Exemplo:

 

16/04/2008 19:45

à

17/04/2008 07:30

 

So que se faço essa consulta nao retona nada, pois a hora e menor que a hora final..

Gostaria de saber como fazer? E simples mais nao to conseguindo...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Testei como falei..

 

ex:

SELECT dt_data, dt_hora FROM tabela

WHERE dt_data >='2008-04-01'

AND hr_data >='19:30:00'

AND dt_data<='2008-04-02'

AND hr_data<='07:30'

 

E assim que estou fazendo.. nao constumo usar o BETWEN que faz o mesmo serviço.

 

Mais problema e o periodo das horas.

E ai ideia??

 

Tabela:

dt_data => date

hr_data => time

 

Aguardo uma resposta.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Testei como falei..

 

ex:

SELECT dt_data, dt_hora FROM tabela

WHERE dt_data >='2008-04-01'

AND hr_data >='19:30:00'

AND dt_data<='2008-04-02'

AND hr_data<='07:30'

 

E assim que estou fazendo.. nao constumo usar o BETWEN que faz o mesmo serviço.

 

Mais problema e o periodo das horas.

E ai ideia??

 

Tabela:

dt_data => date

hr_data => time

 

Aguardo uma resposta.

Ninguem aqui no forum pode me ajudar??? <_<

Compartilhar este post


Link para o post
Compartilhar em outros sites

porque tá separando um campo pra hora e data?

coloca num campo datetime que vai facilitar demais sua vida

e lembre-se, pra pegar as datas, você só precisa de um DATE_FORMAT() no campo, tipo DATE_FORMAT(`datetime`, '%s') mostra os segundos ;)

E detalhe, você pode inclusive fazer um CAST(DATE_FORMAT(`datetime`, '%d') AS INT) por exemplo e comparar como se fosse um número inteiro ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

vamos la...

 

 

select * from tabela

where

( (UNIX_TIMESTAMP(dt_data) )+ ( (HOUR(hr_date)) * 360) + ( (MINUTE(hr_date))*60 ) )

BETWEEN

UNIX_TIMESTAMP('2008-04-01 19:30:00')

AND

UNIX_TIMESTAMP('2008-04-02 07:30:00')

 

 

Basicamente eu transformei tudo em segundo , mas sinceramente seria melhor você usar datetime em vez de separar em duas colunas

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.