[RESOLVIDO] - Where campo data

Boa tarde pessoal.
Estou tentando fazer com que o campo Data seja filtrado no meu select na aplicação grid para gerar gráfico.

SELECT
ID_AGENDA,
Year(DATA_CONSULTA),
COMPARECEU,
CONTADOR
FROM
agenda
WHERE
COMPARECEU=‘NÃO’
AND
DATA_CONSULTA=$ano_atual
//////////////////////////

Não está dando certo.
no meu ScriptInit coloquei assim:

$ano_atual=date(‘Y’);

Se alguém puder me ajudar eu agradeço.

Obrigado

date(‘Y’) significa que você quer a data atual ?
Ou é uma data de um determinado campo?

Se for o campo:

SELECT
ID_AGENDA,
Year(DATA_CONSULTA),
COMPARECEU,
CONTADOR
FROM
agenda
WHERE
COMPARECEU=‘NÃO’
AND
DATA_CONSULTA={data_consulta}

E no campo “data_consulta” em “Editar” coloque ele pra iniciar como data do sistema.

OU se for data atual:

SELECT
ID_AGENDA,
Year(DATA_CONSULTA),
COMPARECEU,
CONTADOR
FROM
agenda
WHERE
COMPARECEU=‘NÃO’
AND
DATA_CONSULTA=‘NOW()’

Caro FredKeyster

O date(‘Y’) significa que eu quero pegar a data atual ou seja os registros do ano de 2013.
o campo Year(DATA_CONSULTA) significa que eu quero pegar somente o ano YYYY e esse dado está no banco de dados gravado, lá tenho várias datas de consulta de vários anos.

Ao colocar esse comando Year(DATA_CONSULTA) na query o Scriptcase criu um campo chamado YEAR_2 automaticamente e retirou o campo DATA_CONSULTA.

E está dando o seguinte erro ao executar:
ERRO
Erro ao acessar o banco de dados
Unknown column ‘YEAR_2’ in ‘where clause’
select count(*) from agenda_medica where COMPARECEU=‘NÃO’ AND YEAR_2=‘NOW()’

Se for uma data atual e você quer usar em uma instrução sql use o “now()”. Isso dentro da instrução.

E está dando o seguinte erro ao executar:
ERRO
Erro ao acessar o banco de dados
Unknown column ‘YEAR_2’ in ‘where clause’
select count(*) from agenda_medica where COMPARECEU=‘NÃO’ AND YEAR_2=‘NOW()’

Celso bom dia,

Pelo que entendi você opode melhorar teu select para trazer o que precisas. Eu faria assim:

SELECT
    ID_AGENDA,
    Year(DATA_CONSULTA) AS ANO,
    COMPARECEU,
    CONTADOR
FROM
    agenda
WHERE
COMPARECEU='NÃO'
AND
year(DATA_CONSULTA) = {data_consulta}

Isto considerando que o campo {data_consulta} só contém o ano que você deseja filtrar.

Não sei se me fiz entender.

Exatamente como o Kleyber disse.

SELECT ID_AGENDA, Year(DATA_CONSULTA) AS ANO, COMPARECEU, CONTADOR FROM agenda WHERE COMPARECEU='NÃO' AND year(DATA_CONSULTA) = '$campo_data';

Wheres não aceitam passar campos como aliás, tu terá que usar a formula do campo select…

Bom dia amigos.

Após “N” tentativas agora aprendi. kkkkk

A solução para pegar os dados do ano corrente é:

SELECT
ID_AGENDA,
DATA_CONSULTA,
COMPARECEU,
CONTADOR
FROM
agenda
WHERE
COMPARECEU=‘NÃO’
AND
YEAR(DATA_CONSULTA) = YEAR(CURDATE())

DATA_CONSULTA = Campo que quarda as datas da consulta.

Um abraço a todos.

Eu particularmente não gosto de usar o comando de datas do banco de dados, uso o do php DATE() pois as datas podem estar diferentes, creio que se você usar “YEAR(DATA_CONSULTA) = '”.date(‘Y’)."’", também funcionará, mais o importante é que você conseguiu.

Almeida,
No caso como que o Mysql poderia calcular a data diferente a do PHP?

Cara sobre ano é muito difícil, mais sobre horas por causa do GMT, já aconteceu comigo. O php.ini tem uma linha que define o timezone e o timezone do mysql é definido no mesmo. Então ocorre diferença de horas, mais isso é com falta de cuidado também, mesmo assim prefiro usar a do php, principalmente em inserts e update, pois se acontecer algum erro da data todas estarão iguais a do php é mais facil arrumar o erro rsrs…

Ps: Mas isso é apenas o meu ponto de vista.

Legal desse ponto de vista é melhor o php.

Fiz um teste aqui com a sua dica e deu o seguinte erro:

Erro ao acessar o banco de dados
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘Y’)."’"’ at line 1
select count(*), sum(CONTADOR) as sum_contador from agenda_medica where COMPARECEU=‘NÃO’ AND YEAR(DATA_CONSULTA) = ‘".date(‘Y’)."’"

Eis aqui a query:

WHERE
COMPARECEU=‘NÃO’
AND
YEAR(DATA_CONSULTA) = ‘".date(‘Y’)."’"

faz o select usando (") duplas vou por um modelou tu copia ele.
Tipo eu usei o date concatenado e fora das " duplas mas dentro de ’ simples do sql.

$sql = “SELECT count(*), sum(CONTADOR) as sum_contador FROM agenda_medica
WHERE COMPARECEU=‘NÃO’ AND
YEAR(DATA_CONSULTA) = '”.date(“Y”)."’";

sc_lookup(rs, $sql) ou sc_select(rs, $sql);

Tente ai.

Se não funcionar no meu exemplo acima, poste seu sql completo que você usou no php.