SQL COM DATA E HORA SEPARADOS

2,564 views
Skip to first unread message

Mychel Candido

unread,
Aug 3, 2010, 4:08:50 PM8/3/10
to php-b...@googlegroups.com
Estou com a seguinte duvida de como fazer,

tenho uma table com id, data, hora

preciso fazer um select onde a data e hora sejam menor que a data e hora de hoje como faco o mesmo ? tentei fazer da seguinte forma

( data <= DATE(NOW()) AND ( hora <= TIME(NOW()) mas nao funcionou da forma desejada como posso fazer este select ?

Stephan A. de Souza

unread,
Aug 3, 2010, 4:36:52 PM8/3/10
to php-b...@googlegroups.com
Concatena os campos data e hora e faz a consulta como se fosse um TIMESTAMP / DATETIME... :)

2010/8/3 Mychel Candido <mychel...@gmail.com>

--
Você está recebendo esta mensagem porque se inscreveu no grupo "php-brasil" dos Grupos do Google.
Para postar neste grupo, envie um e-mail para php-b...@googlegroups.com.
Para cancelar a inscrição nesse grupo, envie um e-mail para php-brasil+...@googlegroups.com.
Para obter mais opções, visite esse grupo em http://groups.google.com/group/php-brasil?hl=pt-BR.



--
Stephan Alan de Souza
Analista de Sistemas Ação Direta | http://www.acaodireta.com.br
Forum Admin ragnaBR | http://forum.ragnabr.net


Mychel Candido

unread,
Aug 3, 2010, 4:46:01 PM8/3/10
to php-b...@googlegroups.com
Ok fiz da seguinte forma

 CAST(DATE_FORMAT(CONCAT(data," ", hrora,":00"), "%Y-%m%-%d %H:%i:%s") AS DATETIME) <= NOW()

Paulo Augusto Teixeira

unread,
Aug 4, 2010, 9:18:02 AM8/4/10
to php-b...@googlegroups.com
No mysql tem DateFormat() e TimeFormat() com eles vc pode formatar sua data e hora para comparar.

E se vc formatar num formato data e time valido, vc pode comparar com <, > e = sem problemas

Além disso você tem:

  • DATEDIFF(expr,expr2), TIMEDIFF(expr,expr2)

    DATEDIFF() retorna o número de dias entre a data inicial expr e a data final expr2. expr e expr2 são expressões de datas ou data e hora. Apenas a parte da data dos valores sã usados no cálculo.

    TIMEDIFF() retorna o tempo entre a hora inicial expr e a hora final expr2. expr e expr2 são expressões de hora ou data e hora, mas ambas devem ser do mesmo tipo.

    mysql> SELECT DATEDIFF('1997-12-31 23:59:59','1997-12-30');
    -> 1
    mysql> SELECT DATEDIFF('1997-11-31 23:59:59','1997-12-31');
    -> -30
    mysql> SELECT TIMEDIFF('2000:01:01 00:00:00', '2000:01:01 00:00:00.000001');
    -> '-00:00:00.000001'
    mysql> SELECT TIMEDIFF('1997-12-31 23:59:59.000001','1997-12-30 01:01:01.000002');
    -> '46:58:57.999999'

    DATEDIFF() e TIMEDIFF() foram adicionados no MySQL 4.1.1.

 e também:

PERIOD_DIFF(P1,P2)

Retorna o número de meses entre os períodos P1 e P2. P1 e P2 devem estar no formato AAMM ou AAAAMM.

Note que os argumentos de período P1 e P2 não são valores de data:

mysql> SELECT PERIOD_DIFF(9802,199703);
-> 11


Da uma navegada na doc do mysql, veja se te da alguma idéia.

http://dev.mysql.com/doc/refman/4.1/pt/date-and-time-functions.html

[]s

2010/8/3 Mychel Candido <mychel...@gmail.com>

--
Você está recebendo esta mensagem porque se inscreveu no grupo "php-brasil" dos Grupos do Google.
Para postar neste grupo, envie um e-mail para php-b...@googlegroups.com.
Para cancelar a inscrição nesse grupo, envie um e-mail para php-brasil+...@googlegroups.com.
Para obter mais opções, visite esse grupo em http://groups.google.com/group/php-brasil?hl=pt-BR.



--
Paulo A. Teixeira
Adobe Certified Expert Flex 3 with AIR
Adobe Certified Expert Rich Internet Application v1.0
Adobe Certified Expert ColdFusion 8
--
Blog: http://www.pauloteixeira.blog.br

Luciano Camilo (Meus Gastos)

unread,
Aug 4, 2010, 2:08:24 PM8/4/10
to php-brasil
Da próxima vez tente usar um timestamp que sua vida vai ficar bem mais
simples.... =)

Mas segue uma das solucoes (que eu acho mais simples)


SELECT * FROM tabela WHERE data < DATE(NOW()) OR (data = DATE(NOW())
AND hora <= TIME(NOW()))
Reply all
Reply to author
Forward
0 new messages