Jump to content


Photo

Mais Um Problema Com Datas


  • Faça o login para participar
5 replies to this topic

#1 tecnical

tecnical

    Novato no fórum

  • Usuários
  • 5 posts
  • Sexo:Não informado

Posted 09/01/2006, 22:19

olá,

sou iniciante em PHP, portanto isso deve ser bem fácil,

estou querendo fazer uma busca em uma tabela onde quero todos os registros que sejam do mês de março (03) por exemplo... eu pesquisei um pouco vi a função MONTH(), porém não estou conseguindo colocá-la pra funcionar...

fiz dessa forma,

na tabela tem um campo data_desejada em formato DATE, o código do select é:


$sql = "SELECT * FROM tabela WHERE MONTH(data_desejada) = ".$_POST["mes"];
$row = @mysql_num_rows($sql);

//VERIFICA SE RETORNOU ALGO
if($row == 0) echo "Não encontrei nada";


porém sempre retorna o
Não encontrei nada... sendo que há campos com o mês procurado.

Grato,

#2 [_Darkness_]

[_Darkness_]

    Novato no fórum

  • Usuários
  • 3 posts
  • Sexo:Não informado
  • Interesses:Programação, design, mulheres

Posted 09/01/2006, 23:46

vc disse q a data esta em formato date.
usa a função explode para fazer a converção da data que vc digita para o formato date

tipow se sua data que está no db está no formato mm/dd/aa
e a data que vc vae digitar esta no formato dd/mm/aa
use a função explode pra montar a data que voce digitar no formato mm/dd/aa

exemplo
$data_do_form = $POST['mes'];
$data_ex = explode ("/", $data_do_form);
$data_convertida = $data_ex[1]."/".$data_ex[0]."/".$data_ex[2];

entaum seu select deve ficar assim:

$sql = "SELECT * FROM tabela WHERE data_desejada ='$data_convertida'";
$resultado = mysql_query($sql) or die ("ERRO!".mysql_error());

bom axo q deve ser isso, se num grita ae rsrs :P



se eu naum estiver enganado isso deve funcionar :)
Eu apoio a idéia:
Conhece o GOOGLE ?
Search The Fucking Web!

#3 Goku Jr

Goku Jr

    Nilson

  • Usuários
  • 3757 posts
  • Sexo:Masculino

Posted 10/01/2006, 06:18

ou no proprio SQL usando o DATE_FORMAT(%d , %m, %y) se não me engano ( de uma procurada aqui no forum a respeito desta função )

T+
-----------------------------------------------------------------------
PALMEIRAS - Primeiro campeão do mundo em 1951

#4 paes

paes

    GustavoPaes.Net

  • Usuários
  • 1393 posts
  • Sexo:Masculino
  • Localidade:São Paulo - SP
  • Interesses:Rumo ao topo!

Posted 10/01/2006, 07:15

SELECT DATE_FORMAT(campo_data, '%d/%m/%Y');

Como mexer com datas no MySQL:
http://dev.mysql.com...-functions.html

Até
Site: GustavoPaes.net

^ Rumo ao Topo ^

#5 jfsso

jfsso

    12 Horas

  • Usuários
  • 145 posts
  • Sexo:Não informado
  • Localidade:Tsukuba
  • Interesses:JAVA - PHP - RUBY - PERL - PYTHON - MYSQL

Posted 10/01/2006, 07:53

Gente, tem pelo menos oito maneiras de selecionar todas as linhas com um certo mes com SQL. Pra que usar gambiarra php? :wacko:

Veja esse comentario no site do mysql:

Posted by Luke Burgess on February 21 2005 7:11pm [Delete] [Edit]

There doesn't appear to be an official way of selecting * from a table where eg 'date is january 2005'. So far i've found 8 different ways!!

1. where date like '2005-01-%'
2. where DATE_FORMAT(date,'%Y-%m')='2005-01'
3. where EXTRACT(YEAR_MONTH FROM date)='200501'
4. where YEAR(date)='2005' and MONTH(date)='1'
5. where substring(date,1,7)='2005-01'
6. where date between '2005-01-01' and '2005-01-31'
7. where date >= '2005-01-01' and date <= '2005-01-31'
8. where date IN('2005-01-01','2005-01-02','2005-01-03','2005-01-04',
'2005-01-05','2005-01-06','2005-01-07','2005-01-08','2005-01-09',
'2005-01-10',2005-01-11','2005-01-12','2005-01-13','2005-01-14',
'2005-01-15','2005-01-16','2005-01-17','2005-01-18','2005-01-19',
'2005-01-20', '2005-01-21','2005-01-22','2005-01-23','2005-01-24',
'2005-01-25','2005-01-26','2005-01-27','2005-01-28','2005-01-29',
'2005-01-30','2005-01-31')



Parece que e' no seu codigo:
1. nao esta sendo executado o pedido
2. pedido incompleto

$sql = "SELECT * FROM tabela WHERE MONTH(data_desejada) = '{$_POST[mes]}';";
$resultado = mysql_query($sql);
$row = mysql_num_rows($resultado);

O codigo acima deve funcionar.

Se voce quer apenas saber a quantidade, use a funcao COUNT do mysql assim:
SELECT COUNT(id) FROM tabela WHERE MONTH(data_desejada) = '{$_POST[mes]}';
Ai e' so interpretar o resultado. :-)

Evite usar o @, que serve para esconder erros, antes de funcoes pois isso dificulta encontrar problemas.
João

#6 tecnical

tecnical

    Novato no fórum

  • Usuários
  • 5 posts
  • Sexo:Não informado

Posted 11/01/2006, 14:18

Grato a todos os que colaboraram...

Consegui resolver o meu problema...

Obrigado




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq