0
votes

Comment mettre à jour de manière dynamique les dates chaque année pour une requête?

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.

J'ai essayé d'utiliser des variations de getdate et cela ne fonctionne pas.

Mon code actuel ressemble à ceci

Où date entre "1/1/2018" et 1/1/2019 '

J'ai besoin de cela pour mettre à jour chaque année une fois qu'une nouvelle année commence en janvier.


4 commentaires

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 , oracle , sql-serveur , db2 , ...


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.


3 Réponses :


0
votes

Essayez ceci:

Where date between (SELECT DATEADD(yy, DATEDIFF(yy, 0, GETDATE()), 0)) And
   (DATEADD(yy, DATEDIFF(yy, 0, GETDATE()) + 1, -1))


3 commentaires

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 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.



0
votes

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)


0 commentaires

0
votes

Pour MS SQL Server 2012 et plus tard, vous pouvez utiliser Datefrompartts: xxx

puis votre requête devient: xxx


0 commentaires