web-dev-qa-db-fra.com

SQL - Obtenir le résultat de l'année en cours uniquement

Comment puis-je obtenir le résultat de l'année en cours en utilisant SQL?

J'ai une table qui a une date de colonne avec le format yyyy-mm-dd.

Maintenant, je veux faire une requête sélectionnée qui ne retourne que le résultat de l'année en cours.

Le pseudo code devrait être comme:

select * from table where date is (current year dates)

Le résultat devrait être comme suit:

id date
2  2015-01-01
3  2015-02-01
9  2015-01-01
6  2015-02-01

Comment puis-je faire ceci?

7
Md. Motiur Rahman

Utilisez YEAR() pour obtenir uniquement l'année des dates avec lesquelles vous souhaitez travailler:

select * from table where YEAR(date) = YEAR(CURDATE())
23
John Conde

Utiliser WHERE YEAR(date) = YEAR(CURDATE()) est correct mais il ne peut pas utiliser d'index sur la colonne date si elle existe; si ça n'existe pas, ça devrait.

Une meilleure solution est:

SELECT *
FROM tbl
WHERE `date` BETWEEN '2015-01-01' AND '2015-12-31'

Les dates (premier et dernier jour de l'année) doivent être générées à partir du code client.

7
axiac
SELECT id, date FROM your_table WHERE YEAR( date ) = YEAR( CURDATE() )
1
hakiko

Lorsque j'ai essayé ces réponses sur le serveur SQL, j'ai eu une erreur en disant que curdate () n'était pas une fonction reconnue.

Si vous obtenez la même erreur, utiliser getdate () au lieu de curdate () devrait fonctionner!

0
jmrpink

Vous pouvez le faire en utilisant SQL DATE_FORMATE(). comme ci-dessous:

SELECT
    date
FROM
    TABLE
WHERE
    DATE_FORMAT(date, '%Y') = YEAR (CURDATE());
0
Faisal

- ========= Obtenir l'année en cours ===========

Select DATEPART(yyyy, GETDATE()) 
0
Adil Ayoub
SELECT
    date
FROM
    TABLE
WHERE
    YEAR (date) = YEAR (CURDATE());
0
EngineerCoder