begin process at 2012 02 11 18:28:48
  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 CONVERT NUMBER TO LETTERS par oumaya2007
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

 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 + 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 Afficher par mois [ par famou2 ] Bonjour à tous: J ai la table suivante : [color=red]Réservation[/color]([u]numres[/u],Date) Maintenant je veux afficher les réservations par mois ou aide [ par ouatt121 ] salut svp j'ai une preocupation .j'ai une table cotisation où il y a les colonnes suivantes : identifiant,date,montant j'aimerais faire une requète SQL [ par ouatt121 ] salut svp j'ai une preocupation .j'ai une table cotisation où il y a les colonnes suivantes : identifiant,date,montant et Le problème est que la colon Mettre à jour champ Date [ par Elmarzougui ] Bonjour; J'ai une table PostgreSQL, je veux mettre à jour un champ de type DATE (YYYY-MM-JJ): Si les deux premier chiffres de [color=red]YY[/color]YY affichage par jour [ par uboot76 ] bonjour J'aurais besoin de votre aide pour une requête sql. Mon but est d'avoir Salle Lundi Mardi .... début fin p SOS Affichage de la dernier date via SQLServer [ par inghoudhoud ] Bonjour je travail sur une base de donnée sqlServer j'enregistre les donnes plus qu'une fois et je veux affiché les dernier donnée enregistré c a di


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

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 : 6,318 sec (3)

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