SQL-obter apenas o resultado do ano em curso

Como posso obter o resultado do ano em curso usando SQL?

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?

Author: LAD, 2015-01-02

6 answers

Uso YEAR() para obter apenas o ano das datas que você quer trabalhar com:

select * from table where YEAR(date) = YEAR(CURDATE())
 17
Author: John Conde, 2015-01-02 16:45:46

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.

 5
Author: axiac, 2015-01-02 17:09:15
SELECT id, date FROM your_table WHERE YEAR( date ) = YEAR( CURDATE() )
 1
Author: hakiko, 2015-01-02 16:50:43

Pode fazer isto usando SQL DATE_FORMATE(). como em baixo:

SELECT
    date
FROM
    TABLE
WHERE
    DATE_FORMAT(date, '%Y') = YEAR (CURDATE());
 0
Author: Faisal, 2017-02-02 06:48:05
SELECT
    date
FROM
    TABLE
WHERE
    YEAR (date) = YEAR (CURDATE());
 0
Author: EngineerCoder, 2017-02-02 07:52:10

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!

 0
Author: jmrpink, 2018-07-18 21:24:50