|
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 - FONCTIONS DE CONVERSION D'UNE DATE (CONVERT, DATEPART)
Information sur la source
Description
Microsoft SQL Server (UDF) Exemples très simples de conversion d'une date à partir de CONVERT et DATEPART.
Source
- Create Function [dbo].[fctDateToStr] (@Date DateTime)
- Returns Char(10) As
- /*
- Cette fonction de conversion retourne une chaîne de caractères
- contenant la date selon le format "dd/mm/yyyy";
- */
- Begin
- Return Convert(Char(10), @Date,103)
- End
- --------------------------------------------------------------------------------------------------------
- Create Function [dbo].[fctTimeToStr] (@Date DateTime)
- Returns Char(8) As
- /*
- Cette fonction de conversion retourne une chaîne de caractères
- contenant l'heure selon le format "hh:mm:ss";
- */
- Begin
- Return Convert(Char(8), @Date,108)
- End
- --------------------------------------------------------------------------------------------------------
- Create Function [dbo].[fctDateTimeToStr] (@Date DateTime)
- Returns Char(19) As
- /*
- Cette fonction de conversion retourne une chaîne de caractère contenant
- la date et l'heure selon le format "dd/mm/yyyy hh:mm:ss".
- */
- Begin
- Return Convert(Char(10), @Date,103) + ' ' + Convert(Char(8), @Date,108)
- End
- --------------------------------------------------------------------------------------------------------
- Create Function [dbo].[fctFormatDateTime] (@Format As Varchar(19), @Date DateTime)
- Returns Varchar(19) As
- /*
- Cette fonction de conversion retourne une chaîne de caractère au format indiqué.
- Réduit à l'essentiel le nombre de formats de conversion peut être complété à volonté.
- Retourne "Null" si le format saisi est incorrect ou non défini.
- Exemples d'utilisation :
- -- Appel ; Résultat ; Format
- -- Select dbo.fctFormatDateTime('dd/mm/yyyy', Cast('22/12/2005 11:39:00' As DateTime)) ; 22/12/2005 ; Date sans heure
- -- Select dbo.fctFormatDateTime('dd/mm/yyyy hh:mm:ss', Cast('22/12/2005 11:39:00' As DateTime)) ; 22/12/2005 11:39:00 ; Date et heure
- -- Select dbo.fctFormatDateTime('yyyy-mm-dd', Cast('22/12/2005 11:39:00' As DateTime)) ; 2005-12-22 ; Date ODBC canonique sans l'heure
- -- Select dbo.fctFormatDateTime('yyyy-mm-dd hh:mm:ss', Cast('22/12/2005 11:39:00' As DateTime)) ; 2005-12-22 11:39:00 ; Date ODBC canonique avec l'heure
- -- Select dbo.fctFormatDateTime('dd mmm yyyy', Cast('22/12/2005 11:39:01.365' As DateTime)) ; 22 déc 2005 ; Date abrégée sans heure
- -- Select dbo.fctFormatDateTime('dd mmmm yyyy', Cast('22/12/2005 11:39:01.365' As DateTime)) ; 22 décembre 2005 ; Date complète sans heure
- -- Select dbo.fctFormatDateTime('mmm', Cast('22/12/2005 11:39:01.365' As DateTime)) ; déc ; Mois abrégé
- -- Select dbo.fctFormatDateTime('hh:mm:ss', Cast('22/12/2005 11:39:01.365' As DateTime)) ; 11:39:01 ; Heure sans les millisecondes
- */
- Begin
- Return Case @Format
- When 'dd/mm/yyyy' Then Convert(Char(10), @Date,103)
- When 'yyyy-mm-dd' Then Convert(Char(10), @Date, 120)
- When 'yyyy-mm' Then Convert(Char(7), @Date, 120)
- When 'dd/mm/yyyy hh:mm:ss' Then Convert(Char(10), @Date,103) + ' ' + Convert(Char(8), @Date,108)
- When 'yyyy-mm-dd hh:mm:ss' Then Convert(Char(19), @Date, 120)
- When 'dd mmm yyyy' Then Case Month(@Date)
- When 4 Then Cast(Day(@Date) As Varchar(2)) + ' ' + Left(DateName(Month, @Date), 3) + ' ' + Cast(Year(@Date) As Char(4))
- When 5 Then Cast(Day(@Date) As Varchar(2)) + ' ' + Left(DateName(Month, @Date), 3) + ' ' + Cast(Year(@Date) As Char(4))
- When 10 Then Cast(Day(@Date) As Varchar(2)) + ' ' + Left(DateName(Month, @Date), 3) + ' ' + Cast(Year(@Date) As Char(4))
- When 11 Then Cast(Day(@Date) As Varchar(2)) + ' ' + Left(DateName(Month, @Date), 3) + ' ' + Cast(Year(@Date) As Char(4))
- When 12 Then Cast(Day(@Date) As Varchar(2)) + ' ' + Left(DateName(Month, @Date), 3) + ' ' + Cast(Year(@Date) As Char(4))
- Else Cast(Day(@Date) As Varchar(2)) + ' ' + Left(DateName(Month, @Date), 4) + ' ' + Cast(Year(@Date) As Char(4))
- End
- When 'dd mmmm yyyy' Then Cast(Day(@Date) As Varchar(2)) + ' ' + DateName(Month, @Date) + ' ' + Cast(Year(@Date) As Char(4))
- When 'mmm' Then Case Month(@Date)
- When 4 Then Left(DateName(Month, @Date), 3)
- When 5 Then Left(DateName(Month, @Date), 3)
- When 10 Then Left(DateName(Month, @Date), 3)
- When 11 Then Left(DateName(Month, @Date), 3)
- When 12 Then Left(DateName(Month, @Date), 3)
- Else Left(DateName(Month, @Date), 4)
- End
- When 'hh:mm:ss' Then Convert(Char(8), @Date,108)
- End
- End
- --------------------------------------------------------------------------------------------------------
- Create Function [dbo].[fctDateOf] (@Dte DateTime)
- Returns Datetime
- -- Retourne l'information de date en attribuant la valeur 0 (minuit) à la partie heure.
- Begin
- Return Convert(DateTime, Floor(Convert(Float, @Dte)));
- end
- --------------------------------------------------------------------------------------------------------
- Create Function [dbo].[fctTimeOf] (@Dte DateTime)
- Returns DateTime
- -- Retourne l'information d'heure en attribuant la valeur 0 (01/01/1900) à la partie date.
- Begin
- Return Convert(DateTime, Convert(Binary(4),@Dte));
- End
- --------------------------------------------------------------------------------------------------------
- Create Function [dbo].[fctQuarterOf] (@Dte DateTime)
- Returns Tinyint
- -- Retourne le trimestre d'une date.
- -- Exemple d'utilisation :
- -- Select dbo.fctQuarterOf(getdate())
- Begin
- Return DatePart(Quarter, @Dte);
- End
-
- --------------------------------------------------------------------------------------------------------
- Create Function [dbo].[fctSemesterOf] (@Dte DateTime)
- Returns Tinyint
- -- Retourne le semestre d'une date.
- -- Exemple d'utilisation :
- -- Select dbo.fctSemesterOf(getdate())
- Begin
- Return Ceiling(Month(@Dte)/6.0);
- End
- --------------------------------------------------------------------------------------------------------
- Create Function [dbo].[fctWeek] (@Dte DateTime)
- Returns Int As
- Begin
- -- Retourne le n° de semaine ISO (bibliographie : http://msdn2.microsoft.com/en-US/library/aa258261(SQL.80).aspx)
- Declare @Week Int ;
- Set @Week= DatePart(wk, @Dte) + 1 - DatePart(wk, Cast(DatePart(yy, @Dte) As Char(4)) + '0104') ;
-
- -- Les journées du 1er au 3 janv. peuvent appartenir à l'année précédente
- If (@Week=0)
- Set @Week=dbo.fctWeek(Cast(DatePart(yy, @Dte) - 1 As Char(4)) + '12'+ Cast(24+DatePart(Day, @Dte) As Char(2))) + 1 ;
-
- -- Les journée du 29 au 31 déc. peuvent appartenir à l'année suivante
- If ((DatePart(mm, @Dte)=12) And ((DatePart(dd, @Dte) - DatePart(dw, @Dte))>= 28))
- Set @Week=1 ;
-
- Return(@Week) ;
- End
Create Function [dbo].[fctDateToStr] (@Date DateTime)
Returns Char(10) As
/*
Cette fonction de conversion retourne une chaîne de caractères
contenant la date selon le format "dd/mm/yyyy";
*/
Begin
Return Convert(Char(10), @Date,103)
End
--------------------------------------------------------------------------------------------------------
Create Function [dbo].[fctTimeToStr] (@Date DateTime)
Returns Char(8) As
/*
Cette fonction de conversion retourne une chaîne de caractères
contenant l'heure selon le format "hh:mm:ss";
*/
Begin
Return Convert(Char(8), @Date,108)
End
--------------------------------------------------------------------------------------------------------
Create Function [dbo].[fctDateTimeToStr] (@Date DateTime)
Returns Char(19) As
/*
Cette fonction de conversion retourne une chaîne de caractère contenant
la date et l'heure selon le format "dd/mm/yyyy hh:mm:ss".
*/
Begin
Return Convert(Char(10), @Date,103) + ' ' + Convert(Char(8), @Date,108)
End
--------------------------------------------------------------------------------------------------------
Create Function [dbo].[fctFormatDateTime] (@Format As Varchar(19), @Date DateTime)
Returns Varchar(19) As
/*
Cette fonction de conversion retourne une chaîne de caractère au format indiqué.
Réduit à l'essentiel le nombre de formats de conversion peut être complété à volonté.
Retourne "Null" si le format saisi est incorrect ou non défini.
Exemples d'utilisation :
-- Appel ; Résultat ; Format
-- Select dbo.fctFormatDateTime('dd/mm/yyyy', Cast('22/12/2005 11:39:00' As DateTime)) ; 22/12/2005 ; Date sans heure
-- Select dbo.fctFormatDateTime('dd/mm/yyyy hh:mm:ss', Cast('22/12/2005 11:39:00' As DateTime)) ; 22/12/2005 11:39:00 ; Date et heure
-- Select dbo.fctFormatDateTime('yyyy-mm-dd', Cast('22/12/2005 11:39:00' As DateTime)) ; 2005-12-22 ; Date ODBC canonique sans l'heure
-- Select dbo.fctFormatDateTime('yyyy-mm-dd hh:mm:ss', Cast('22/12/2005 11:39:00' As DateTime)) ; 2005-12-22 11:39:00 ; Date ODBC canonique avec l'heure
-- Select dbo.fctFormatDateTime('dd mmm yyyy', Cast('22/12/2005 11:39:01.365' As DateTime)) ; 22 déc 2005 ; Date abrégée sans heure
-- Select dbo.fctFormatDateTime('dd mmmm yyyy', Cast('22/12/2005 11:39:01.365' As DateTime)) ; 22 décembre 2005 ; Date complète sans heure
-- Select dbo.fctFormatDateTime('mmm', Cast('22/12/2005 11:39:01.365' As DateTime)) ; déc ; Mois abrégé
-- Select dbo.fctFormatDateTime('hh:mm:ss', Cast('22/12/2005 11:39:01.365' As DateTime)) ; 11:39:01 ; Heure sans les millisecondes
*/
Begin
Return Case @Format
When 'dd/mm/yyyy' Then Convert(Char(10), @Date,103)
When 'yyyy-mm-dd' Then Convert(Char(10), @Date, 120)
When 'yyyy-mm' Then Convert(Char(7), @Date, 120)
When 'dd/mm/yyyy hh:mm:ss' Then Convert(Char(10), @Date,103) + ' ' + Convert(Char(8), @Date,108)
When 'yyyy-mm-dd hh:mm:ss' Then Convert(Char(19), @Date, 120)
When 'dd mmm yyyy' Then Case Month(@Date)
When 4 Then Cast(Day(@Date) As Varchar(2)) + ' ' + Left(DateName(Month, @Date), 3) + ' ' + Cast(Year(@Date) As Char(4))
When 5 Then Cast(Day(@Date) As Varchar(2)) + ' ' + Left(DateName(Month, @Date), 3) + ' ' + Cast(Year(@Date) As Char(4))
When 10 Then Cast(Day(@Date) As Varchar(2)) + ' ' + Left(DateName(Month, @Date), 3) + ' ' + Cast(Year(@Date) As Char(4))
When 11 Then Cast(Day(@Date) As Varchar(2)) + ' ' + Left(DateName(Month, @Date), 3) + ' ' + Cast(Year(@Date) As Char(4))
When 12 Then Cast(Day(@Date) As Varchar(2)) + ' ' + Left(DateName(Month, @Date), 3) + ' ' + Cast(Year(@Date) As Char(4))
Else Cast(Day(@Date) As Varchar(2)) + ' ' + Left(DateName(Month, @Date), 4) + ' ' + Cast(Year(@Date) As Char(4))
End
When 'dd mmmm yyyy' Then Cast(Day(@Date) As Varchar(2)) + ' ' + DateName(Month, @Date) + ' ' + Cast(Year(@Date) As Char(4))
When 'mmm' Then Case Month(@Date)
When 4 Then Left(DateName(Month, @Date), 3)
When 5 Then Left(DateName(Month, @Date), 3)
When 10 Then Left(DateName(Month, @Date), 3)
When 11 Then Left(DateName(Month, @Date), 3)
When 12 Then Left(DateName(Month, @Date), 3)
Else Left(DateName(Month, @Date), 4)
End
When 'hh:mm:ss' Then Convert(Char(8), @Date,108)
End
End
--------------------------------------------------------------------------------------------------------
Create Function [dbo].[fctDateOf] (@Dte DateTime)
Returns Datetime
-- Retourne l'information de date en attribuant la valeur 0 (minuit) à la partie heure.
Begin
Return Convert(DateTime, Floor(Convert(Float, @Dte)));
end
--------------------------------------------------------------------------------------------------------
Create Function [dbo].[fctTimeOf] (@Dte DateTime)
Returns DateTime
-- Retourne l'information d'heure en attribuant la valeur 0 (01/01/1900) à la partie date.
Begin
Return Convert(DateTime, Convert(Binary(4),@Dte));
End
--------------------------------------------------------------------------------------------------------
Create Function [dbo].[fctQuarterOf] (@Dte DateTime)
Returns Tinyint
-- Retourne le trimestre d'une date.
-- Exemple d'utilisation :
-- Select dbo.fctQuarterOf(getdate())
Begin
Return DatePart(Quarter, @Dte);
End
--------------------------------------------------------------------------------------------------------
Create Function [dbo].[fctSemesterOf] (@Dte DateTime)
Returns Tinyint
-- Retourne le semestre d'une date.
-- Exemple d'utilisation :
-- Select dbo.fctSemesterOf(getdate())
Begin
Return Ceiling(Month(@Dte)/6.0);
End
--------------------------------------------------------------------------------------------------------
Create Function [dbo].[fctWeek] (@Dte DateTime)
Returns Int As
Begin
-- Retourne le n° de semaine ISO (bibliographie : http://msdn2.microsoft.com/en-US/library/aa258261(SQL.80).aspx)
Declare @Week Int ;
Set @Week= DatePart(wk, @Dte) + 1 - DatePart(wk, Cast(DatePart(yy, @Dte) As Char(4)) + '0104') ;
-- Les journées du 1er au 3 janv. peuvent appartenir à l'année précédente
If (@Week=0)
Set @Week=dbo.fctWeek(Cast(DatePart(yy, @Dte) - 1 As Char(4)) + '12'+ Cast(24+DatePart(Day, @Dte) As Char(2))) + 1 ;
-- Les journée du 29 au 31 déc. peuvent appartenir à l'année suivante
If ((DatePart(mm, @Dte)=12) And ((DatePart(dd, @Dte) - DatePart(dw, @Dte))>= 28))
Set @Week=1 ;
Return(@Week) ;
End
Historique
- 23 décembre 2005 15:24:49 :
- Ajout d'une fct de conversion de date similaire à la fct Delphi simplifiée
- 10 janvier 2006 13:41:37 :
- Rajout des formats :
- mois abrégé "mmm"
- date abrégée "dd mmm yyyy"
- date complète "dd mmmm yyyy"
- 23 février 2006 16:07:39 :
- Suppression d'un cas (select case mois 10) traité deux fois dans la fonction fctFormatDatetime.
Plus de 2000 connexions et aucune remarque sur ce doublon ; c'est l'hibernation !
- 23 août 2007 18:31:31 :
- Ajout de la fonction « DateOf » (astuce Nix) similaire à la fonction éponyme en Delphi.
- 23 août 2007 18:33:01 :
- Erreur de saisie
- 24 août 2007 09:18:02 :
- ajout préfixe
- 28 août 2007 14:19:33 :
- Ajout de la fontion nommée « fctTimeOf ».
- 28 août 2007 14:24:10 :
- Correction incrémentation
- 30 août 2007 09:59:56 :
- Correction titre après ajouts
- 30 août 2007 10:35:11 :
- Correction
- 30 août 2007 11:08:31 :
- Simplification de la fctTimeOf (cf. Skweeky)
- 04 septembre 2007 10:23:52 :
- Ajout de la fctWeek (n° ISO de semaine, support Microsoft)
- 04 septembre 2007 10:31:43 :
- MAJ du titre + incrémentation
- 05 novembre 2007 09:58:48 :
- Ajout du trimestre et du semestre d'une date
Contre toute attente, ces exemples sont encore utiles (cf. forum).
- 05 novembre 2007 10:01:45 :
- Ajout du trimestre et du semestre d'une date
Contre toute attente, ces exemples sont encore utiles (cf. forum).
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
Supprimer une date antérieure à une autre [ par billou_13 ]
Bonjour, Alors, voila je dois faire une requête SQL permettant de supprimer toutes les informations d'une table où les dates seraient ant&#
Date format... [ par elpens ]
Bonjour,j'ai quelques procedures stockees qui utilisent des dates. Mon problème (si on peux appeler cela un problème), est que je ne sais pa
probleme d'ecriture de fonction [ par cudenetf ]
bonjour,j'essaie d'ecrire une fonction (qui sert a comparer 2 dates de 2 datetime) mais j'ai un message d'erreurvoici la fonction : create function me
Conversion de dates [ par Chatbour ]
Salut à tous je voudrais savoir s'il existe une fonction Access qui convertie les date à l'anglaise (#mois-jour-année#) au format français (#jour-mois
Déclaration de variable avec format de date [ par Creat ]
Bonjour, J'aimerais savoir s'il est possible de déclarer une variable date avec un format bien précis. Je m'explique,
Requête SQL : date au format américain [ par Molenn ]
Bonjour, J'ai longtemps hésité entre le forum VB et celui SQL ... J'espère avoir fait le bon choix Je pose vite fait mon problème :Une base SQL Server
probleme de date [ par romainbisson ]
Bonjour,je souhaite recuperer la date en SQL,avec la fonction curtime(), je recuper l'heure donc c'est bonmaintenant avec la fonction curdate(), je re
convert string to date [ par sofiesofie ]
salut,j'ai une table "matable"(num, date) tel que date de type datetime.dans ma formulaire la date est de type string (string d="24/05/2008").pour fai
pb insert date dans access [ par hawlk ]
Bonjour,A partir d'excel, je fais une requete pour remplir une base access. Je suis embeté avec un champs.Le champ "date", il est au format date (abré
Format date [ par boumbo73 ]
Bonjour, J'ai une question toute bête.dans ma table j'ai une colonne crdate avec les données de ce type : 2008-08-28 13:45:00J'aimerais faire une requ
|
Téléchargements
Logiciels à télécharger sur le même thème :
|