À l'aide de SQL Server 2000, comment puis-je obtenir la première et la dernière date de l'année en cours?
Production attendue:
01/01/2012
et 31/12/2012
À l'aide de SQL Server 2000, comment puis-je obtenir la première et la dernière date de l'année en cours?
Production attendue:
01/01/2012
et 31/12/2012
SELECT
DATEADD(yy, DATEDIFF(yy, 0, GETDATE()), 0) AS StartOfYear,
DATEADD(yy, DATEDIFF(yy, 0, GETDATE()) + 1, -1) AS EndOfYear
La requête ci-dessus donne une valeur datetime pour minuit au début du 31 décembre. C'est environ 24 heures avant le dernier moment de l'année. Si vous souhaitez inclure le temps qui pourrait se produire le 31 décembre, comparez-le au premier de l'année suivante, avec une <
comparaison. Ou vous pouvez comparer aux dernières millisecondes de l'année en cours, mais cela laisse toujours un espace si vous utilisez autre chose que DATETIME (tel que DATETIME2):
SELECT
DATEADD(yy, DATEDIFF(yy, 0, GETDATE()), 0) AS StartOfYear,
DATEADD(yy, DATEDIFF(yy, 0, GETDATE()) + 1, -1) AS LastDayOfYear,
DATEADD(yy, DATEDIFF(yy, 0, GETDATE()) + 1, 0) AS FirstOfNextYear,
DATEADD(ms, -3, DATEADD(yy, DATEDIFF(yy, 0, GETDATE()) + 1, 0)) AS LastTimeOfYear
Détails techniques
Cela fonctionne en calculant le nombre d'années depuis 1900 avec DATEDIFF(yy, 0, GETDATE())
, puis en l'ajoutant à une date de zéro = 1 janvier 1900. Cela peut être changé pour fonctionner pour une date arbitraire en remplaçant la GETDATE()
partie ou une année arbitraire en remplaçant la DATEDIFF(...)
fonction par "Année - 1900."
SELECT
DATEADD(yy, DATEDIFF(yy, 0, '20150301'), 0) AS StartOfYearForMarch2015,
DATEADD(yy, 2015 - 1900, 0) AS StartOfYearFor2015
Voici un moyen assez simple;
SELECT DATEFROMPARTS(YEAR(GETDATE()), 1, 1) AS 'First Day of Current Year';
SELECT DATEFROMPARTS(YEAR(GETDATE()), 12, 31) AS 'End of Current Year';
Ce n'est pas sexy, mais ça marche.
Vous pouvez obtenir l'année en cours en utilisant la
DATEPART
fonction, à partir de la date actuelle obtenue en utilisantgetUTCDate()
la source
DATETIME
place de la chaîne et évidemment cela pourrait ne pas correspondre à la sortie attendue selon la question.yyyyMMdd
est sans ambiguïté.écrivez simplement: -
date de début de l'année.
la source
Chaque année a le 1 er comme première date et le 31 comme dernière date, ce que vous devez faire est de ne rattacher l'année qu'à ce jour et ce mois par exemple: -
la source
Pour obtenir le premier et le dernier jour de l'année, on peut utiliser la
CONCAT
fonction. La valeur résultante peut être convertie en n'importe quel type.la source
Pour la date de début de l'année en cours:
Pour la date de fin de l'année en cours:
la source
Une autre façon: (depuis SQL Server 2012)
la source
Découvrez celui-ci:
la source
la source
la source
Il semble que vous soyez intéressé à effectuer une opération sur tout pour une année donnée, si c'est effectivement le cas, je recommanderais d'utiliser la fonction YEAR () comme ceci:
Il en va de même pour DAY () et MONTH () . Ils sont également disponibles pour les variantes MySQL / MariaDB et ont été introduits dans SQL Server 2008 (donc pas pour 2000 spécifiques).
la source
la source
Dans Microsoft SQL Server (T-SQL), cela peut être fait comme suit
CURRENT_TIMESTAMP - renvoie la date du serveur SQL au moment de l'exécution de la requête.
ANNÉE - obtient la partie année de l'horodatage actuel.
STR , LTRIM - ces deux fonctions sont appliquées afin que nous puissions le convertir en un varchar qui peut être concaténé avec le préfixe souhaité (dans ce cas, il s'agit soit de la première date de l'année, soit de la dernière date de l'année). Pour une raison quelconque, le résultat généré par la fonction YEAR a des espaces de préfixe. Pour les corriger, nous utilisons la fonction LTRIM qui est à gauche.
la source
S'il atteint le 1er janvier, il se peut que ce soit encore la date des dernières années.
la source
Essaye ça:
la source
Msg 195, Level 15, State 10, Line 1 'NOW' is not a recognized function name.
--- Démos Lalmuni ---
--- insérer des valeurs ---
la source