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 !

DERNIER JOUR DU MOIS, OU DE LA SEMAINE


Information sur la source



Description

J'ai mis ces fonctions toujour utiles dans CODIX (les snippets) mais l'un est faut et on peut pas le corriger la bas... alors je le poste ici, corrigé :)
2 fonctions, 1 pour le dernier jour du mois, l'autre pour le dernier jour de la semaine.
Ha, aussi je reposte celle pour les années bissextiles ^^ ça mange pas de pain :)
 

Source

  • CREATE FUNCTION [dbo].[Last_Day] (@date AS datetime)
  • RETURNS datetime
  • AS
  • BEGIN
  • set @date = DATEADD(DAY, 1-DAY(@date), @date)
  • set @date = DATEADD(MONTH, 1, @date)
  • return DATEADD(DAY, -1, @date)
  • END
  • CREATE FUNCTION [Last_Week_Day] (@date AS datetime)
  • RETURNS datetime
  • AS
  • BEGIN
  • return DATEADD(DAY, 7-DatePart(DW, @date), @date)
  • END
  • CREATE FUNCTION [IsLeapYear] (@Annee AS int)
  • RETURNS bit
  • AS
  • BEGIN
  • Declare @Date29Fev AS Datetime
  • Declare @Result AS bit
  • SET @Date29Fev = DATEADD(DAY, -1, Cast('01/03/'+Cast(@Annee AS varchar(4)) AS datetime))
  • IF Day(@Date29Fev )=29
  • SET @Result =1
  • ELSE
  • SET @Result = 0
  • return @Result
  • END
CREATE FUNCTION [dbo].[Last_Day] (@date AS datetime) 
RETURNS datetime
AS
BEGIN
	set @date = DATEADD(DAY, 1-DAY(@date), @date)
	set @date = DATEADD(MONTH, 1, @date)
	return DATEADD(DAY, -1, @date)
END


CREATE FUNCTION [Last_Week_Day] (@date AS datetime) 
RETURNS datetime
AS
BEGIN
	return DATEADD(DAY, 7-DatePart(DW, @date), @date)
END


CREATE FUNCTION [IsLeapYear] (@Annee AS int) 
RETURNS bit
AS
BEGIN
	Declare @Date29Fev AS Datetime
	Declare @Result AS bit
	SET @Date29Fev  = DATEADD(DAY, -1, Cast('01/03/'+Cast(@Annee AS varchar(4)) AS datetime))
	IF Day(@Date29Fev )=29	
		SET @Result =1
	ELSE
		SET @Result = 0

	return @Result
END

Conclusion

Remarque pour Last_Day : obligatoire de faire 3 étapes
parce que en 1 seule étape y'a forcément des cas où ça buggue:

SELECT DATEADD(DAY, -DAY(@date), DATEADD(MONTH, 1, @date))
'30/01/2006' +1mois => '29/02/2006' -29jours => '29/01/2006' au lieu de '31/01/2006' attendu!
Mais si l'on procède dans l'autre sens:
SELECT DATEADD( MONTH, 1, DATEADD(DAY, -DAY(@date), @date))
'03/03/2006' -3jours => '28/02/2006' +1mois => '28/03/2006' au lieu de '31/03/2006'
En effet la fonction DATEADD est intelligente (heureusement)

 

Commentaires et avis

signaler à un administrateur
Commentaire de skweeky le 06/04/2007 20:31:27 administrateur CS

Attention au format de date : le JJ/MM/AAAA ne fonctionne que si la langue du compte avec laquelle on se connecte est french (et quelques autres).
Les 2 seuls formats universels dans SQL Server :
  'AAAAMMJJ HH:mm:SS.mms'
  'AAAA-MM-JJTHH:mm:SS.mms'

signaler à un administrateur
Commentaire de FENETRES le 03/05/2007 14:17:03

Et, pour cet exemple, crois-tu que cela bogue ?

CREATE FUNCTION [dbo].[GetLastDayOfMonth](@Dte As Datetime)
RETURNS DATETIME
BEGIN
   SET @Dte=DATEADD(MONTH, 1, @Dte)
   RETURN DATEADD(DAY, -DAY(@Dte), @Dte)
END

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

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 Comment recuperer la date du 1er jour de la semaine ?? [ par sosou80 ] Bonjour tous le monde ,Voila mon petit probléme : j'ai une table temporaire construite dans une procédure stockée comme suit:#tab_temp( Jour,Mois,Anné 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 . Date + 1 mois [ par ALLODREN ] Bonjour, Je travaille avec une base mysql V.5 Malgré de nombreuses recherche sur ce forum et ailleurs, je n'arrive pas à faire cela : Extraire les VB.net 2005 et SQL 2005 Express : Prbl DateTime [ par morleys ] Bonjour à vous tous,Je coince voilà quelque temps sur un probleme d'enregistrement de date SQL 2005.Si j'ai toto = Cdate(Now())  & requete date [ par Rjoe ] bonjour ma question est la suivantedans mon aplication je souhaite faire une verification pour un mois courant ,or, il se peut que ce mois soit f Pb Date (1ère semaine de l'année) [ par Herminator ] Bonjour à tous, J'ai un petit problème de date, lorsque j'exécute la requête suivante : SELECT DATEPART(ww,GETDATE()), GETDATE() Encore un problème de dates avec MySQL [ par ImmortalPC ] Salut, je deviens fou avec mon calendrier J' ai une date de commencement et une date de fin respectivement : date_start et date_end Leur type : datet requete avec date [ par nawal59 ] salut,SELECT Table1.Aide, Table1.NumDossier, Table1.TypeDemAccomp,Table1.dateFicheEtabli, Table1.date1ercontact, Table1.nom, Table1.nomJeuneFille, Tab problème de Date lorsque l'intervalle est à cheval sur 2 mois... [ par nico_ayci ] salut à tous ! j'ai une fonctionnalité de recherche qui donne la possibilité de trouver des enregistrements selon leur date, à plu


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,499 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.