|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
SQL SERVER - OBTENIR LA DATE DU DERNIER JOUR DU MOIS (GET LAST DAY OF MONTH).
Information sur la source
Description
UDF "GetLastDayOfMonth" pour obtenir la date du dernier jour du mois avec ou sans gestion de l'heure.
Source
- CREATE FUNCTION [dbo].[GetLastDayOfMonth](@Dte DATETIME, @AtMidnight BIT)
- RETURNS DATETIME
- /* Retourne la date du dernier jour du mois avec ou sans gestion de l'heure.
- Exemples d'utilisation :
- Select dbo.GetLastDayOfMonth(Cast('05/02/2007 12:20:49.250' As DateTime), 1) >> 2002-02-28 00:00:00.000
- Select dbo.GetLastDayOfMonth(Cast('05/02/2007 12:20:49.250' As DateTime), 0) >> 2007-02-28 23:59:59.997
- Select dbo.GetLastDayOfMonth(Cast('05/02/2007 12:20:49.250' As DateTime), Null) >> 2007-02-28 12:20:49.250
- */
- BEGIN
- IF @AtMidnight= 0
- RETURN DATEADD(MILLISECOND, -3, DATEADD(MONTH, DATEDIFF(MONTH, 0, @Dte) + 1, 0))
- ELSE
- SET @Dte=DATEADD(DAY, -1, DATEADD(MONTH, 1, DATEADD(DAY, 1-DAY(@Dte), @Dte)));
-
- IF @AtMidnight= 1
- RETURN CAST(CONVERT(CHAR(10), @Dte, 103) AS DATETIME);
-
- RETURN @Dte;
- END
-
- CREATE FUNCTION [dbo].[GetLastDay](@Dte DATETIME)
- RETURNS DATETIME
- /* Retourne la date du dernier jour du mois sans gestion de l'heure.
- Exemples d'utilisation (tests de validation) :
- Select dbo.GetLastDayOfMonth(Cast('01/02/2007 12:20:49.250' As DateTime))>>2007-02-28 12:20:49.250
- Select dbo.GetLastDayOfMonth(Cast('10/02/2007 12:20:49.250' As DateTime))>>2007-02-28 12:20:49.250
- Select dbo.GetLastDayOfMonth(Cast('28/02/2007 12:20:49.250' As DateTime))>>2007-02-28 12:20:49.250
- */
- BEGIN
- SET @Dte=DATEADD(MONTH, 1, @Dte)
- RETURN DATEADD(DAY, -DAY(@Dte), @Dte)
- END
CREATE FUNCTION [dbo].[GetLastDayOfMonth](@Dte DATETIME, @AtMidnight BIT)
RETURNS DATETIME
/* Retourne la date du dernier jour du mois avec ou sans gestion de l'heure.
Exemples d'utilisation :
Select dbo.GetLastDayOfMonth(Cast('05/02/2007 12:20:49.250' As DateTime), 1) >> 2002-02-28 00:00:00.000
Select dbo.GetLastDayOfMonth(Cast('05/02/2007 12:20:49.250' As DateTime), 0) >> 2007-02-28 23:59:59.997
Select dbo.GetLastDayOfMonth(Cast('05/02/2007 12:20:49.250' As DateTime), Null) >> 2007-02-28 12:20:49.250
*/
BEGIN
IF @AtMidnight= 0
RETURN DATEADD(MILLISECOND, -3, DATEADD(MONTH, DATEDIFF(MONTH, 0, @Dte) + 1, 0))
ELSE
SET @Dte=DATEADD(DAY, -1, DATEADD(MONTH, 1, DATEADD(DAY, 1-DAY(@Dte), @Dte)));
IF @AtMidnight= 1
RETURN CAST(CONVERT(CHAR(10), @Dte, 103) AS DATETIME);
RETURN @Dte;
END
CREATE FUNCTION [dbo].[GetLastDay](@Dte DATETIME)
RETURNS DATETIME
/* Retourne la date du dernier jour du mois sans gestion de l'heure.
Exemples d'utilisation (tests de validation) :
Select dbo.GetLastDayOfMonth(Cast('01/02/2007 12:20:49.250' As DateTime))>>2007-02-28 12:20:49.250
Select dbo.GetLastDayOfMonth(Cast('10/02/2007 12:20:49.250' As DateTime))>>2007-02-28 12:20:49.250
Select dbo.GetLastDayOfMonth(Cast('28/02/2007 12:20:49.250' As DateTime))>>2007-02-28 12:20:49.250
*/
BEGIN
SET @Dte=DATEADD(MONTH, 1, @Dte)
RETURN DATEADD(DAY, -DAY(@Dte), @Dte)
END
Conclusion
Select Cast(0 As DateTime) retourne 1900-01-01 00:00:00.000 Select DATEADD(DAY, 1-DAY(@Dte), @Dte) retourne le premier jour du mois
Historique
- 21 mars 2007 15:37:19 :
- Err. manip. (tjs trop pressé)
- 03 avril 2007 13:41:20 :
- Correction
- 05 avril 2007 10:09:42 :
- Explication complémentaires
- 10 avril 2007 10:54:21 :
- Simplification : « DATEADD(DAY, -DAY(@dte), DATEADD(MONTH, 1, @dte)) » est l'équivalent de « DATEADD(DAY, -1, DATEADD(MONTH, 1, DATEADD(DAY, 1-DAY(@Dte), @Dte))) ». Par contre, il importe de ne pas modifier l'ordre des opérations. Il faut d'abord ajouter un mois puis soustraire le nombre de jours.
- 10 avril 2007 12:49:38 :
- Correction de la casse dans l'éventualité d'une prise en compte.
- 10 avril 2007 13:36:00 :
- Mea culpa... la simplification n'est pas valide pour la borne supérieure (dernier jour du mois passé en paramètre).
- 10 avril 2007 13:42:30 :
- Ponctuation
- 11 mai 2007 09:01:57 :
- Ajout de l'algo. simplifié : GetLastDay (dernier jour du mois sans gestion de l'heure).
Sources du même auteur
Sources de la même categorie
Sources en rapport avec celle ci
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
le dernier jours d'un mois [ par g_fuck ]
salut !!!je sais pas si je devrais pauser ma question ici .... J'aimerais savoir si il existe une fonction pour trouver le dernier jours d'un mois .
Mise à jour des dates de durée [ par jg_444 ]
Bonjour,J'ai une base de donnée Sybase pour garder trace de mes formations et compétences.Lorsque je fais une mise à jour de la durée d'une compétence
Problème de mise à jour access [ par fzf ]
Bonjour,J'ai effectué une mise à jour mais lorsque j'exécute celle ci le message "Erreur de syntaxe (opérateur absent) dans l'expression "COUNT(Sélect
Pb sur jointure dans update dans access 2003 [ par lecourty ]
Boujour,J'ai deux tables TABLE1 et TABLE2numero, maxi N1, N2, N31 0 19 7 42 0
Lociciel develloper en C++ et incrementation de base MYSQL [ par davidb1967 ]
Bonjour,A partir d'un logiciel que j'ai fait developper (traitement et mise en ligne de photo).Qui pourrais me dire quel sont les differente methode d
probleme mis à jour [ par fetsa054 ]
bonjour à tous, je développe une application vb.net sous vs2008 qui gère une base de données Access,dans le programme je fais une requete UPDATE qui
table dans base de donnée avec mise à jour de colonne [ par lsamsoumal ]
Bonjour tout le monde. dans une base de données mysql je veux créer une table presence qui contient 3 colonnes: utilisateur,date/heure et evenement.
Requete SQL - 3 mois glissants [ par bbertt ]
Avant toutes choses, Bonjour a tousJe tiens à vous remercier car le forum m'a permis de répondre à une grande quantité de questions durant mon stage.C
mise à jour de table [ par belgariel ]
Bonjour, Je travaille actuellement sur sql serveur 2000 et je dois mettre à jour une base de donnée en ajoutant des champs à une table. Le problème es
Probleme Replication de fusion Mise a jour table [ par j2bond2 ]
Bonjourj'ai un serveur distant sous SQL SERVER EXPRESS et un serveur local sous SQL SERVER 2005 et je souhaite mettre a jour une table sur le site dis
|
Téléchargements
Logiciels à télécharger sur le même thème :
Comparez les prix Nouvelle version
|