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?
Utilisez YEAR()
pour obtenir uniquement l'année des dates avec lesquelles vous souhaitez travailler:
select * from table where YEAR(date) = YEAR(CURDATE())
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.
SELECT id, date FROM your_table WHERE YEAR( date ) = YEAR( CURDATE() )
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!
Vous pouvez le faire en utilisant SQL DATE_FORMATE()
. comme ci-dessous:
SELECT
date
FROM
TABLE
WHERE
DATE_FORMAT(date, '%Y') = YEAR (CURDATE());
- ========= Obtenir l'année en cours ===========
Select DATEPART(yyyy, GETDATE())
SELECT
date
FROM
TABLE
WHERE
YEAR (date) = YEAR (CURDATE());