Ir para conteúdo

POWERED BY:

Arquivado

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

andersonleme

Trazer a próxima data

Recommended Posts

Estou desenvolvendo um sistema onde em determinado momento tenho os campos "data e hora" da tabela "consultas".

 

Preciso de uma forma de trazer a próxima data e hora da consulta.

 

ex: agora são 10:10h , tenho consulta na tabela as 09:00h de hoje, não posso exibir pois ja passou.

tenho que trazer a proxima, que pode ser a qualquer dia e qualquer hora.

 

tentei fazer o SQL da seguinte forma:

 

strSqle = "SELECT * FROM consultas WHERE (id_endereco = '"&Trim(edr)&"') AND data >='"&ConverterDataBanco(date())&"' ORDER BY data ASC, horario_inicial ASC"

funciona mais traz o horario que ja passou, if eu colocar o horario >= time ... ele bloqueia o de amanha pois se tiver uma consulta as 9 amanha, nao trará.
ai tentei algo assim:
SELECT IF(data >= '2014-01-15' AND horario_inicial > '19:00' , data , DATE_ADD(data, INTERVAL 1 DAY)) FROM consultas WHERE  id_endereco ='19' ORDER BY data ASC, horario_inicial ASC; 

 

mais só funciona se tiver consulta amanha.

 

penso que só vai dar pra resolver com uma condição no asp, que seria mais facil...

se alguem tiver uma solução no mysql agradeço.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se fizer um select pela data com between e abre um loop onde faz um novo select com a hora ?

 

ou

 

se a data e hora estão no mesmo campo vc pode usar o between,

yyyy-mm-dd h:m:n

e as varives de consulta fossem:
datai = yyyy(i)-mm(i)-dd(i) h(i):m(i):n(i)
dataf = yyyy(f)-mm(f)-dd(f) h(f):m(f):n(f)

daria para fazer essa consulta barbada apenas fazendo isso:

sql = select * from tabela where data between '"&datai&"' and '"&dataf&"'

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não da certo, queria uma alternativa no mysql direto, pra economizar nas consultas ao banco.
mais fiz no ASP. trago as consultas >= data de hoje, e depois ORDENO por horario ASC,

 

ai fiz uma copndição dentro do loop ( IF data > hoje OR horario > time)

 

entao o resultado fica:

traz as consultas >= hoje e segura a mais recente com o horaio >= time, e do um exit do while.

 

 

mesmo assim Obrigado!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

já tentou usar o timeDiff (), ele retorna um valor de tempo ou data e hora, mas ambas devem ser do mesmo tipo.

ou datediff(), retornos expr1 - expr2 expressa como um valor em dias a partir de um dia para o outro. expr1 e expr2 são expressões de data ou data e hora. Somente as partes da data de os valores são usados ​​no cálculo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

o que eu precisava é a proxima... mais eu nao tenho um valor final ... eu tenho a data de hoje e a hora atual, e preciso da proxima data e hora.

exemplo:

a tabela consultas tem 15/01/2014 14:00
eu nao posso trazer pois ja passou do horario, ai teria que trazer o proximo resultado. que pode ser qualquer dia e qualquer hora, nao tenho controle sobre isso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

vc tem 1 coluna para o dia e outra para o horário?

Compartilhar este post


Link para o post
Compartilhar em outros sites

como é gerado esse próximo resultado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vou explicar
é um sistema de consultas on line onde o paciente agenda sua consulta,

o medico tem a agenda online, o pacien te escolhe o dia e horario.

entao a tabela de consulta fica: id_paciente, data e hora

 

o que estou exibindo é no painel do medico .... a proxima consulta marcada.

ex:

paciente | data | hora
1 15/01/2013 15:00

2 15/01/2013 19:00

3 16/01/2013 15:00

4 16/01/2013 13:00

 

 

Agora são 17:52
entao no painel do medico tem que aparecer o 2 registro, pois é a proxima consulta dele....
se nesse momento fosse 19:00 ou mais teria que aparecer o ultimo registro da tabela que é a proxima consulta dele.

Compartilhar este post


Link para o post
Compartilhar em outros sites

amigo.. não me leve a mal, mas o q vc quer fazer já estava bem claro... o q eu perguntei foi isso:

 

você tem 1 coluna para o dia e outra para o horário?

 

se não, tente o comando:

select * from tabela where coluna_com_a_data > curdate();

Compartilhar este post


Link para o post
Compartilhar em outros sites

vc pode pegar a data e hora concatenar, para ficar em um só formato e usar o beteween assim yyyy(i)-mm(i)-dd(i) h(i):m(i):n(i)

Compartilhar este post


Link para o post
Compartilhar em outros sites

se não, tente o comando:

select * from tabela where coluna_com_a_data > curdate()

 

ops.. foi mal.. não tinha testado; tente now():

select * from tabela where coluna_com_a_data > now()

testei agora e deu certo, veja ahe..

Compartilhar este post


Link para o post
Compartilhar em outros sites

tem um exemplo de calendário que coloquei no fórum onde vc pode agendar os compromissos(no seu caso consulta), dá uma olhada nele tem bastante recursos, daí vc pode basear nele.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fernando a data e hora sao separadas, eu ja fiz uma condição para resolver a situação, é que eu queria resolver no SQL, mais nao tem como, pois preciso do proximo horario de atendimento,. usar > now() ou > date() ou CURDATE nao iria resolver, pois a tabela de registros nao segue um padrao de horarios ....

o registro 1 pode ser dia 20/10/2014 aS 15:00 e o registro 2 da tabela pode ser dia 17/02/2014 as 10:00 ... a minha duvida era se teria uma forma de pegar a proxima... só no SQL, tipo ai apareceria o registro com a data e horario mais proximo eliminando tudo pra traz de hoje e do horario que o usuario consultou e pegando o "> now() " que traria o resto dos resultados e mostrando qual é o mais proximo da presente data e hora"

o between que o xanburzum opinou seria simples se eu tivesse um horario e data final... mais eu nao tenho.

mesmo assim gente ta resolvido... minha duvida era se com uma instruçao sql resolveria pra ficar simples.

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.