begin process at 2010 03 18 00:21:02
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Fonctions

 > DERNIER JOUR DU MOIS, OU DE LA SEMAINE

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)


 Sources de la même categorie

Source avec Zip CALCUL UNE DIFFÉRENCE DE DATE EN FONCTION DE JOURS FÉRIÉS/TR... par Sieurcoug
Source avec Zip CONVERSION DE NOMBRE EN LETTRES (SQL) par wormlore
NO HTML BALISE [MYSQL] par abdoulax
MYSQL : FONCTION POUR GÉRER DES COMPTEURS ÉQUIVALENT AUX SÉQ... par maitredede
RÉINDEXER TOUTES LES TABLES D'UNE BASE DE DONNÉES par pneau

 Sources en rapport avec celle ci

[ORACLE]DÉTERMINER LA DATE DU PREMIER JOUR D'UNE SEMAINE PAR... par Bouillou2
TROUVER LES PROCHAINS ANNIVERSAIRES par zefo
AJOUT , SUPPRESSION INTERVALLE DE TEMPS EN PLSQL par lamjed
FAIRE UN COUNT ET GROUPER PAR DATE AVEC LA MÉTHODE FLOOR par Nix
SQL SERVER - OBTENIR LA DATE DU DERNIER JOUR DU MOIS (GET LA... par FENETRES

Commentaires et avis

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'

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é UNE REQUETE SQL [ par zaydoo ] BONJOUR LES AMIS je veux faire une requête qui affiche le nombre de commande par mois trié en ordre croissant; j'ai fais cette requête: SELECT MONTHN Date d'échéance moins un mois [ par Phil_VB ] Bonjour à tous, Je suis occupé à essayer de pondre une base de données pour la gestion de mon club de dressage de chiens et je bloque lamentablement 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 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 . 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


Nos sponsors


Appels d'offres

Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,312 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales