Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal,
Como devo escrever o sql usando as funções GetSQLValueString e STR_TO_DATE?
Estou fazendo assim:
$query .= sprintf(" AND STR_TO_DATE('funcionario.data_admissao','%%d/%%m/%%Y') = %s ",
GetSQLValueString($data_admissao, "date"));
Não dá nenhum erro, mas não encontra dados. Provavelmente esta faltando ou sobrando alguma aspa.
A query preenchida fica assim:
AND STR_TO_DATE('funcionario.data_admissao','%d/%m/%Y') = '25/03/2005'
Obrigada!
>
nao sera '%' demais no seu primeiro exemplo?
O % a mais é por conta do sprintf, se coloco apenas um a função GetSQLValueString espera uma variavel para o d, uma para o m e uma para o y. Com o %% fica certo.
A primeira parte é como escrevo o sql, a segunda é como ele fica após preencher o campo no programa. Essa segunda parte peguei com debug.
se esse campo for um nome da tabela do banco funcionario.data_admissao não precisa ter aspas simples pois e deixa de ser o campo do banco e passa a ser uma simples string......
outra coisa me parece que a saida de STR_TO_DATE('funcionario.data_admissao','%d/%m/%Y') = '25/03/2005' não é 25/03/2005 e sim 2005-03-25
mas provavelmente esse não é o seu erro pois não esta saindo nada....
abraços espero ter ajudado
marco
>
Pessoal,
Como devo escrever o sql usando as funções GetSQLValueString e STR_TO_DATE?
Estou fazendo assim:
$query .= sprintf(" AND STR_TO_DATE('funcionario.data_admissao','%%d/%%m/%%Y') = %s ",
GetSQLValueString($data_admissao, "date"));
Não dá nenhum erro, mas não encontra dados. Provavelmente esta faltando ou sobrando alguma aspa.
A query preenchida fica assim:
AND STR_TO_DATE('funcionario.data_admissao','%d/%m/%Y') = '25/03/2005'
Obrigada!
Oi Marco,
Tirei as aspas do funcionario.data_admissao , realmente é o campo da tabela.
Mas continua não encontrando registro.
No campo da tela eu digito 25/03/2005. Faço o submit e paro com o debug (CodeLobster) na linha depois de montar a query, e o resultado é:
SELECT matricula, nome, DATE_FORMAT(data_admissao,'%d/%m/%Y'), DATE_FORMAT(data_demissao,'%d/%m/%Y') FROM funcionario WHERE 1=1 AND STR_TO_DATE(funcionario.data_admissao,'%d/%m/%Y') = '25/03/2005'
No programa está:
if (empty($data_admissao) == FALSE)
$query_rs_funcionario .= sprintf(" AND STR_TO_DATE(funcionario.data_admissao,'%%d/%%m/%%Y') = %s ", GetSQLValueString($data_admissao, "date"));
Pessoal, desculpem... inverti as funções.
Alterei para:
if (empty($data_admissao) == FALSE)
$query_rs_funcionario .= sprintf(" AND DATE_FORMAT(data_admissao,'%%d/%%m/%%Y') = %s ", GetSQLValueString($data_admissao, "date"));
E agora está funcionando!
Obrigada
P.S:Como faço para editar o tópico como resolvido?
Apenas informe que um moderador altera o titulo
Resolvido
nao sera '%' demais no seu primeiro exemplo?