Ir para conteúdo

POWERED BY:

Arquivado

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

Bru_ce

Selecionar parte de uma string no Banco

Recommended Posts

Boa Tarde,
Seguinte

 

Tenho um BD com datas cadastradas assim -> 03/15/2013 07:00 pm
Logo precisava fazer um filtro entre datas e estou utilizando o jQuery para fazer o calendário:

 

- Eu seleciono a data e é colocada no input assim por exemplo -> 06/03/2013

 

Minha query está assim, só que não pega ..

 

 

$query = ("SELECT * FROM tabela WHERE ms_data BETWEEN '$juntaTotalInicio' AND '$juntaTotalFim''");

Compartilhar este post


Link para o post
Compartilhar em outros sites

nessa consuta tem uma ' sobrando

 

 

'$juntaTotalFim''");

 

esse campo é varchar ou date? imprimiu e rodou essa consulta direto no banco?

Compartilhar este post


Link para o post
Compartilhar em outros sites

tente converter essa data q vem do jquery para de dd/mm/yyyy para y-m-d.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok, porém no banco está diferente amigo ..
ele vai tentar comparar isso -> 2013-03-16 11:38:03 com isso -> 2013-03-16 e não são iguais !

Compartilhar este post


Link para o post
Compartilhar em outros sites

No Mysql as datas são gravadas no formato YYYY-AA-DD e não com as barras.

 

https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-format

Exemplo:

 

SELECT DATE_FORMAT( 'campo' , '%d-%m-%Y %H:%i:%s' ) as data  FROM tabela

UP

Exibe no formato 20/03/2013 15:03:30

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, você diz o seguinte:

 

Tenho um BD com datas cadastradas assim -> 03/15/2013 07:00 pm

 

Então, você recebe a data assim: 03/15/2013 e quer comparar com esse formato acima correto ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

tente assim:

 

SELECT * FROM tabela WHERE DATE(ms_data) BETWEEN '$juntaTotalInicio' AND '$juntaTotalFim'

Compartilhar este post


Link para o post
Compartilhar em outros sites

Irei tentar, como você me recomenda eu gravar a data da ocorrência ?
Por exemplo cadastrei um usuário no sistema, preciso da data que foi feito isso ..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caso tenha interesse apenas na data, deixe-o como date mesmo, caso tenha interesse no horário, deixe-o datetime e defina o timestamp

 

Vejamos o seguinte, você tem isso: 2013-03-12 17:46:34 Em seu formulário é digitada apenas a data: 00/00/0000

 

Como ira conseguir o horário em que foi gravado o registro anterior ? aí você se complicou um pouco né ? o horário realmente te interessa ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa Tarde Amigo, então o horário não tenho interesse .. apenas a data mesmo !
Você acha que devo pegar a data com a função própria da linguagem ? No caso o DATE ?
Ou continuo inserindo com o NOW() do MySQL.

 

Voltando ao problema do tópico .. tem como eu comparar a data assim 2013-03-12 com assim 2013-03-12 17:46:34 ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

o date(campo) não funcionou?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa Tarde Amigo, então o horário não tenho interesse .. apenas a data mesmo !

Você acha que devo pegar a data com a função própria da linguagem ? No caso o DATE ?

Ou continuo inserindo com o NOW() do MySQL.

 

Voltando ao problema do tópico .. tem como eu comparar a data assim 2013-03-12 com assim 2013-03-12 17:46:34 ?

Tem. MySQL vai assumir 00:00:00

mysql> select TIMESTAMP('2013-03-21');
+-------------------------+
| TIMESTAMP('2013-03-21') |
+-------------------------+
| 2013-03-21 00:00:00     |
+-------------------------+
1 row in set (0,00 sec)


function mysql_date($date) {
    return date('Y-m-d', strtotime($date));
}

$juntaTotalInicio = mysql_date($date);
$juntaTotalFim = mysql_date($date);

SELECT * FROM tabela WHERE DATE(ms_data) BETWEEN '$juntaTotalInicio' AND '$juntaTotalFim'

Compartilhar este post


Link para o post
Compartilhar em outros sites

ultimo recurso... rs

 

SELECT * FROM tabela WHERE date_format(data,'%d/%m/%Y') = '20/03/2013'

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal, pelo que eu entendi, o problema dele é o seguinte.

 

Ele tem um input cuja data é digitada em 00/00/0000

 

o no seu banco de dados ele está nesse formato: 0000-00-00 00:00:00 entenderam o problema ? não adianta ele comprar pois vai dar errado por causa do horário... eu acho que é esse o problema dele, já que não tem o interesse na HORA, tente mudar seu campo apenas para "date" e veja se o mysql irá assumir os registros já inseridos excluindo apenas o horário... faça um backup antes na tabela original caso você tenha problemas, e aí depois poderá fazer a comparação, convertendo 00/00/0000 para 0000-00-00 e comparando com o db que estará 0000-00-00

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso mesmo alaerte, meu problema é este.

meu input gera as datas assim: 00/00/0000
E em minha tabela no BD esta assim: 0000-00-00 00:00:00

 

Preciso fazer um relatório de ligações entre datas porém não esta funcionando ! HELP rs :joia:


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.