Ir para conteúdo

Arquivado

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

Leandro de Jesus

[Resolvido] Filtra o a data formato timestamp

Recommended Posts

Olá pessoal,

Dúvida simples

Resolvi grava a data e hora usando o timestamp.

 

Agora preciso filtra os dados pela data, ou seja mostrar somente os registros pela data de HOJE

eu gravo assim no banco

data = timestamp

No bd fica assim: 2009-07-21 14:40:15

Terei que dar um explode e pegar a data e procurar no banco ou tem algum comando direto na query para filtrar, como por exemplo o Between?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho mais fácil salvar como DATE e só usar o between normal. Dê uma olhada no manual, talvez te ajude.

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

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora preciso filtra os dados pela data, ou seja mostrar somente os registros pela data de HOJE

 

Terei que dar um explode e pegar a data e procurar no banco ou tem algum comando direto na query para filtrar, como por exemplo o Between?

 

Basta usar a função date:

 

Criando a tabela:

mysql> create table `timestamp` (
    ->   `id` mediumint(8) unsigned not null auto_increment,
    ->   `data` timestamp not null default current_timestamp on update current_timestamp,
    ->   primary key(`id`),
    ->   key `datas`(`data`)
    -> ) engine=MyISAM;
Query OK, 0 rows affected (0.00 sec)

Populando:

mysql> insert into `timestamp`(`data`) values
    ->   ("2009-07-21 14:40:15"),
    ->   ("2009-07-22 14:40:15"),
    ->   ("2009-07-23 14:40:15"),
    ->   ("2009-07-24 14:40:15"),
    ->   ("2009-07-25 14:40:15"),
    ->   ("2009-07-26 14:40:15"),
    ->   ("2009-07-27 14:40:15"),
    ->   (now());
Query OK, 8 rows affected (0.00 sec)
Records: 8  Duplicates: 0  Warnings: 0

Ok, sua tabela está parecida com isso:

mysql> select * from `timestamp`;
+----+---------------------+
| id | data                |
+----+---------------------+
|  1 | 2009-07-21 14:40:15 |
|  2 | 2009-07-22 14:40:15 |
|  3 | 2009-07-23 14:40:15 |
|  4 | 2009-07-24 14:40:15 |
|  5 | 2009-07-25 14:40:15 |
|  6 | 2009-07-26 14:40:15 |
|  7 | 2009-07-27 14:40:15 |
|  8 | 2009-07-28 19:14:42 |
+----+---------------------+
8 rows in set (0.00 sec)

Agora filtrando entre datas:

mysql> select `data` from `timestamp` where date(`data`) between date("2009-07-21") and date("2009-07-24");
+---------------------+
| data                |
+---------------------+
| 2009-07-21 14:40:15 |
| 2009-07-22 14:40:15 |
| 2009-07-23 14:40:15 |
| 2009-07-24 14:40:15 |
+---------------------+
4 rows in set (0.00 sec)

Agora, finalmente, o que você quer, que é pegar os registros com a data de hoje:

mysql> select `data` from `timestamp` where date(`data`) = date(now());
+---------------------+
| data                |
+---------------------+
| 2009-07-28 19:14:42 |
+---------------------+
1 row in set (0.01 sec)

Como no exemplo acima, você não precisa do between para recuperar os registros com a data de hoje.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Um dos motivos de não querer usar DATE na tabela, é porque eu sei como trazer a data usando ela. Eu queria mesmo é aprender com timestamp.

 

E funcionou certinho.

 

Só para deixar arquivado para filtrar por mês eu usei MOD(MONTH(CURDATE())

Show de bolaa

 

João abraçoss valeu pela dica.

Resolvido.

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.