begin process at 2012 05 25 12:05:00
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Fonctions

 > SQL SERVER - FONCTIONS DE CONVERSION D'UNE DATE (CONVERT, DATEPART)

SQL SERVER - FONCTIONS DE CONVERSION D'UNE DATE (CONVERT, DATEPART)


 Information sur la source

Note :
Aucune note
Catégorie :Fonctions Classé sous :fonction, convert, conversion, date, format Niveau :Débutant Date de création :04/05/2005 Date de mise à jour :05/11/2007 10:01:45 Vu :53 394

Auteur : FENETRES

Ecrire un message privé
Commentaire sur cette source (3)
Ajouter un commentaire et/ou une note

 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

Source avec Zip Source avec une capture SQL SERVER - GENERATION AUTOMATIQUE D'UNE RETRO-DOCUMENTATIO...
Source avec Zip Source avec une capture SQL SERVER - PROCEDURE D'EDITION D'UN FICHIER PLAT (EXPORT C...
Source avec une capture SQL SERVER - TRANSMISSION D'UN PARAMETRE A VALEURS MULTIPLES
Source avec une capture SQL SERVER 2005 - GESTION DE LA LARGEUR DES COLONNES D'UNE R...
SQL SERVER - OBTENIR LA DATE DU DERNIER JOUR DU MOIS (GET LA...

 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

Source avec Zip CONVERT NUMBER TO LETTERS par oumaya2007
[ORACLE]DÉTERMINER LA DATE DU PREMIER JOUR D'UNE SEMAINE PAR... par Bouillou2
Source avec Zip CONVERSION DE NOMBRE EN LETTRES (SQL) par wormlore
INTERPRETEUR BRAINFUCK par coucou747
SQL SERVER - CONVERSION D'UN NOMBRE RÉEL (TYPE DÉCIMALE) EN ... par FENETRES

Commentaires et avis

Commentaire de FENETRES le 04/09/2007 15:54:37

Pour le semestre d'une date, voir l'instruction T-SQL ci-dessous.

SELECT CEILING(MONTH(GETDATE())/6)

Commentaire de FENETRES le 04/09/2007 15:58:59

Catastrophe... j'ai oublié l'essentiel ! Annule et remplace l'expression précédente pour le calcul d'un semestre d'une date.

SELECT CEILING(MONTH(GETDATE())/6.0)

Commentaire de ankou22 le 04/09/2007 16:08:27

Merci  ;-)

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

format de la date retourné par dateAdd() ? [ par yosboss ] Bonjour, je travail sur MS SQL Server, et je souhaite exécuter des requêtes avec un WHERE sur la date ... ce que je veux, c'est d'avoir les lignes q Aide fonction date [ par dev19 ] Bonjour tout le monde j'ai une datetime 11/03/2011 01:01:01 alor moi je veut supprimer le time 01:01:01, je veut dans le resultat juste 11/03/2011 j' Format Date [ par patrickthierry ] Bonjour, J'ai des donnees dans un classeur excel, je souhaite les importer dans une table. Je ne sais pas trop comment definir le format de date. - Da sql server [ par mahamourta ] salut svp lorsque je fais une insertion dans une base de donnee sous sql server ,le format de la date est annee-mois-jour,alors que je veux un form unable to convert date time [ par JPhouse ] Bonjour,j'ose poster ici en esperant j'insiste qu'il faut prendre en compte mon inexperience totale en sql voila le probleme: j'ai repris le sitd d'un SELECT entre 2 Dates [ par Nitrakz ] Bonjour, Mon problème est le suivant, je ne parviens pas a limiter mon select a un intervalle entre 2 dates ou 1 date saisi manuellement par un utili [SQL Server 2005] problème heure au format 12h [ par sdisp ] Bonjour.J'ai un soucis avec une requête sur un serveur SQL Serveur 2005 sous Windows 2003 Serveur US.Je m'explique, j'ai un champ de type datetime (ma Format Date et Heure [ par NICK123 ] Bonjour, mon problème est comment afficher une zone datetime comme date (DD/MM/YYYY) ou heure (HH:MM:SS) et pas DD/MM/YYYY HH:MM:SS Merci ajouter une fonction dans ma concaténation [ par smoke ] Hello à tous ;) Voici mon petit problème: Ma structure: BDD: catalogue -------------> articles ----------------------> auteurID -------------------- 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é


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
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,967 sec (3)

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