SQL-obter apenas o resultado do ano em curso
tenho uma tabela que tem uma data de coluna com o formato yyyy-mm-dd
.
Agora, eu quero fazer a pesquisa selecionada que só retorna o resultado do ano atual.
o pseudo-código deve ser do tipo:
select * from table where date is (current year dates)
o resultado deve ser o seguinte:
id date
2 2015-01-01
3 2015-02-01
9 2015-01-01
6 2015-02-01
Como posso fazer isto?
6 answers
Uso YEAR()
para obter apenas o ano das datas que você quer trabalhar com:
select * from table where YEAR(date) = YEAR(CURDATE())
A utilização de WHERE YEAR(date) = YEAR(CURDATE())
está correcta, mas não pode usar um índice na coluna date
se existir; se não existir, deverá.
Uma solução melhor é:
SELECT *
FROM tbl
WHERE `date` BETWEEN '2015-01-01' AND '2015-12-31'
As datas (primeiro e último dia do ano) têm de ser geradas a partir do Código do cliente.
SELECT id, date FROM your_table WHERE YEAR( date ) = YEAR( CURDATE() )
Pode fazer isto usando SQL DATE_FORMATE()
. como em baixo:
SELECT
date
FROM
TABLE
WHERE
DATE_FORMAT(date, '%Y') = YEAR (CURDATE());
SELECT
date
FROM
TABLE
WHERE
YEAR (date) = YEAR (CURDATE());
Quando tentei estas respostas no servidor SQL, recebi um erro dizendo que o curdate () não era uma função reconhecida.
Se tiver o mesmo erro, usar o getdate() em vez do curdate () deverá funcionar!