Accueil > > > SQL SERVER - FONCTIONS DE CONVERSION D'UNE DATE (CONVERT, DATEPART)
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 de la même categorie
Commentaires et avis
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é
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|