J'ai une clause WHERE dans une instruction SQL selon laquelle les codes durs sont deux dates utilisant une fonction entre la fonction. J'aimerais que ces dates soient plus dynamiques et à mettre à jour chaque année sans la modifier manuellement. En utilisant la fonction getDate de quelque manière que ce soit. p>
J'ai essayé d'utiliser des variations de getdate et cela ne fonctionne pas. p>
Mon code actuel ressemble à ceci p>
Où date entre "1/1/2018" et 1/1/2019 ' P>
J'ai besoin de cela pour mettre à jour chaque année une fois qu'une nouvelle année commence en janvier. P>
3 Réponses :
Essayez ceci:
Where date between (SELECT DATEADD(yy, DATEDIFF(yy, 0, GETDATE()), 0)) And (DATEADD(yy, DATEDIFF(yy, 0, GETDATE()) + 1, -1))
Réponse spécifique du produit à une question sans SGBD spécifié. Au moins nous dire quel DBMS ceci est pour.
En plus de ce que Jarlh a écrit: le Sélectionnez CODE> après que l'entre les deux est complètement inutile
En plus des deux des deux éléments ci-dessus: votre enddate exclura toutes les données du 31ème de cette année.
Pour MS SQL Server, vous pouvez utiliser ci-dessous les données de l'année précédente;
WHERE [DateFieldName] BETWEEN DATEADD(YYYY, DATEDIFF(YYYY, 0, GETDATE()) -1, 0)
AND DATEADD(YYYY, DATEDIFF(YYYY, 0, GETDATE()),0)
Pour MS SQL Server 2012 et plus tard, vous pouvez utiliser Datefrompartts: puis votre requête devient: p>
Dupliquer de [Obtenir l'année en cours et la prochaine formulaire MySQL] ( Stackoverflow.com/Questtions/4811271/... )
Quel DBMS Produit utilisez-vous? "SQL" est juste une langue de requête, et non le nom d'une base de données spécifique des fonctions du produit et de la date de date sont très spécifiques au fournisseur. Veuillez ajouter un tag pour le produit de base de données que vous utilisez
postgreSQL code>,oracle code> ,sql-serveur code>,db2 code>, ...Microsoft SQL Server je m'excuse
Je l'ai compris en utilisant une année (getdate ()) Curdate ne semble pas fonctionner pour moi merci à tout ce qui a répondu.