Conversion SQL Server de chaîne / texte en date / date / heure – Bien choisir son serveur d impression
Exécutez ce qui suit
Scripts T-SQL Microsoft SQL Server dans l’éditeur de requêtes Management Studio pour illustrer la conversion de chaîne en date (DATE, DATETIME, SMALLDATETIME).
Lorsqu'une conversion implique un nom de mois ou de jour, elle est dépendante de la langue, donc non déterministe. La fonction week est également non déterministe car elle dépend du premier réglage de date de la semaine (valeur par défaut dans la table sys.syslanguages ou remplacement par SET DATEFIRST).
UTILISATION AdventureWorks
ENSEMBLE LA LANGUE us_english
– Convertir une chaîne en date en utilisant des numéros de style (format) – Format de dates sql
– SQL convertir le texte en date – SQL convertir la chaîne en date / date / heure
SÉLECTIONNER convertir(date / heure,'15 / 03/18 ',3) – 2018-03-15 00: 00: 00.000
SÉLECTIONNER convertir(date / heure,'15 .03.18 ',4) – 2018-03-15 00: 00: 00.000
– Convertir date / heure en liste de style de texte (format) – format heure SQL
– SQL Server sans styles de date siècle (AA) (il y a des exceptions!)
– En général, l’ajout de 100 au numéro de style donne le format de siècle. AAAA / AAAA
SÉLECTIONNER convertir(varchar,avoir un rendez-vous()) – 15 mars 2018 10:35
SÉLECTIONNER convertir(varchar,avoir un rendez-vous(),0) – 15 mars 2018 10:35
SÉLECTIONNER convertir(varchar,avoir un rendez-vous(),1) – 15/03/18
SÉLECTIONNER convertir(varchar,avoir un rendez-vous(),2) – 18.03.15
SÉLECTIONNER convertir(varchar,avoir un rendez-vous(),3) – 15/03/18
SÉLECTIONNER convertir(varchar,avoir un rendez-vous(),4) – 15.03.18
SÉLECTIONNER convertir(varchar,avoir un rendez-vous(),5) – 15-03-18
SÉLECTIONNER convertir(varchar,avoir un rendez-vous(),6) – 15 mars 18
SÉLECTIONNER convertir(varchar,avoir un rendez-vous(),7) – 15 et 18 mars
SÉLECTIONNER convertir(varchar,avoir un rendez-vous(),8) – 10:39:39
SÉLECTIONNER convertir(varchar,avoir un rendez-vous(),9) – 15 mars 2018 10: 39: 48: 373AM
SÉLECTIONNER convertir(varchar,avoir un rendez-vous(),dix) – 15/03/18
SÉLECTIONNER convertir(varchar,avoir un rendez-vous(),11) – 18/03/15
SÉLECTIONNER convertir(varchar,avoir un rendez-vous(),15) – 180315
SÉLECTIONNER convertir(varchar,avoir un rendez-vous(),13) – 15 mars 2018 10: 41: 07: 590
SÉLECTIONNER convertir(varchar,avoir un rendez-vous(),14) – 10: 41: 25: 903
SÉLECTIONNER convertir(varchar,avoir un rendez-vous(),20) – 2018-03-15 10:43:56
SÉLECTIONNER convertir(varchar,avoir un rendez-vous(),21) – 2018-03-15 10: 44: 04.950
SÉLECTIONNER convertir(varchar,avoir un rendez-vous(),22) – 15/03/18 10:44:50 AM
SÉLECTIONNER convertir(varchar,avoir un rendez-vous(),23) – 2018-03-15
SÉLECTIONNER convertir(varchar,avoir un rendez-vous(),24) – 10:45:45
SÉLECTIONNER convertir(varchar,avoir un rendez-vous(),25) – 2018-03-15 10: 46: 11.263
– T-SQL avec styles de date et heure (AAAA ou CCAA)
SÉLECTIONNER convertir(varchar, avoir un rendez-vous(), 100) – 23 oct 2016 à 10:22 (ou PM)
SÉLECTIONNER convertir(varchar, avoir un rendez-vous(), 101) – 23/10/2016
SÉLECTIONNER convertir(varchar, avoir un rendez-vous(), 102) – 2016.10.23
SÉLECTIONNER convertir(varchar, avoir un rendez-vous(), 103) – 23/10/2016
SÉLECTIONNER convertir(varchar, avoir un rendez-vous(), 104) – 23.10.2016
SÉLECTIONNER convertir(varchar, avoir un rendez-vous(), 105) – 23-10-2016
SÉLECTIONNER convertir(varchar, avoir un rendez-vous(), 106) – 23 octobre 2016
SÉLECTIONNER convertir(varchar, avoir un rendez-vous(), 107) – 23 octobre 2016
SÉLECTIONNER convertir(varchar, avoir un rendez-vous(), 108) – 09:10:34
SÉLECTIONNER convertir(varchar, avoir un rendez-vous(), 109) – 23 octobre 2016 11h10: 33h993 (ou PM)
SÉLECTIONNER convertir(varchar, avoir un rendez-vous(), 110) – 23-10-2016
SÉLECTIONNER convertir(varchar, avoir un rendez-vous(), 111) – 2016/10/23
SÉLECTIONNER convertir(varchar, avoir un rendez-vous(), 112) – 20161023
SÉLECTIONNER convertir(varchar, avoir un rendez-vous(), 113) – 23 octobre 2016 06: 10: 55: 383
SÉLECTIONNER convertir(varchar, avoir un rendez-vous(), 114) – 06: 10: 55: 383 (24h)
SÉLECTIONNER convertir(varchar, avoir un rendez-vous(), 120) – 2016-10-23 06:10:55 (24h)
SÉLECTIONNER convertir(varchar, avoir un rendez-vous(), 121) – 2016-10-23 06: 10: 55.383
SÉLECTIONNER convertir(varchar, avoir un rendez-vous(), 126) – 2016-10-23T06: 10: 55.383
ALLER
– Chaîne de conversion SQL en date-heure – Partie temporelle 0 – sql hh mm
– Chaîne de transtypage SQL Server en DATE (fonctionnalité SQL Server 2008) – sql aaaa mm jj
SÉLECTIONNER [Date] = JETER('20120228' COMME rendez-vous amoureux) – 2012-02-28
SÉLECTIONNER [Datetime] = JETER('20120228' COMME date / heure) – 2012-02-28 00: 00: 00.000
SÉLECTIONNER [Datetime] = JETER('20120228' COMME petit temps) – 2012-02-28 00:00:00
– Chaîne de conversion SQL en date-heure – partie temps
– SQL Server convertit la chaîne en date – Format sql times
SÉLECTIONNER [Datetime] = CONVERTIR(date / heure,'2010-02-28')
SÉLECTIONNER [Datetime] = CONVERTIR(petit temps,'2010-02-28')
SÉLECTIONNER [Datetime] = JETER('15 mars 2010' COMME date / heure)
SÉLECTIONNER [Datetime] = JETER('15 mars 2010' COMME petit temps)
SÉLECTIONNER [Datetime] = CONVERTIR(date / heure,'15 mars 2010')
SÉLECTIONNER [Datetime] = CONVERTIR(petit temps,'15 mars 2010')
SÉLECTIONNER [Datetime] = JETER('15 mars 2010 12: 07: 34.444' COMME date / heure)
SÉLECTIONNER [Datetime] = JETER('15 mars 2010 12: 07: 34.444' COMME petit temps)
SÉLECTIONNER [Datetime] = CONVERTIR(date / heure,'15 mars 2010 12: 07: 34.444')
SÉLECTIONNER [Datetime] = CONVERTIR(petit temps,'15 mars 2010 12: 07: 34.444')
SÉLECTIONNER [Datetime] = JETER('2010-02-28 12: 07: 34.444' COMME date / heure)
SÉLECTIONNER [Datetime] = JETER('2010-02-28 12: 07: 34.444' COMME petit temps)
SÉLECTIONNER [Datetime] = CONVERTIR(date / heure,'2010-02-28 12: 07: 34.444')
SÉLECTIONNER [Datetime] = CONVERTIR(petit temps,'2010-02-28 12: 07: 34.444')
– Double conversion
SÉLECTIONNER [Datetime] = JETER(JETER(avoir un rendez-vous() COMME VARCHAR) COMME date / heure)
SÉLECTIONNER [Datetime] = JETER(JETER(avoir un rendez-vous() COMME VARCHAR) COMME petit temps)
SÉLECTIONNER [Datetime] = CONVERTIR(date / heure,convertir(varchar,avoir un rendez-vous()))
SÉLECTIONNER [Datetime] = CONVERTIR(petit temps,convertir(varchar,avoir un rendez-vous()))
————
– MSSQL convertit la chaîne de date en date / heure – l'heure est définie sur 00: 00: 00.000 ou 12:00 AM
IMPRESSION CONVERTIR(date / heure,'07 -10-2016 ',110) – 10 juillet 2016 00h00
IMPRESSION CONVERTIR(date / heure,'2016/07/10',111) – 10 juillet 2016 00h00
IMPRESSION CONVERTIR(varchar,CONVERTIR(date / heure,'20160710', 112),121)
– 2016-07-10 00: 00: 00.000
————
– Styles de date nommés sélectionnés
DÉCLARER @DateTimeValue varchar(32)
– À la mode américaine
– Convertir une chaîne en datetime sql – sql convertir une chaîne en date / heure
SÉLECTIONNER @DateTimeValue = '10 / 23/2016 '
SÉLECTIONNER StringDate=@DateTimeValue,
[US-Style] = CONVERTIR(date / heure, @DatetimeValue)
SÉLECTIONNER @DateTimeValue = '10 / 23/2016 23:01:05 '
SÉLECTIONNER StringDate = @DateTimeValue,
[US-Style] = CONVERTIR(date / heure, @DatetimeValue)
– Style britannique, anglais / français
SÉLECTIONNER @DateTimeValue = '23 / 10/16 23:01:05 '
SÉLECTIONNER StringDate = @DateTimeValue,
[UK-Style] = CONVERTIR(date / heure, @DatetimeValue, 3)
SÉLECTIONNER @DateTimeValue = '23 / 10/2016 4:01 '
SÉLECTIONNER StringDate = @DateTimeValue,
[UK-Style] = CONVERTIR(date / heure, @DatetimeValue, 103)
– à la allemande
SÉLECTIONNER @DateTimeValue = '23 .10.16 23:01:05 '
SÉLECTIONNER StringDate = @DateTimeValue,
[German-Style] = CONVERTIR(date / heure, @DatetimeValue, 4)
SÉLECTIONNER @DateTimeValue = '23 .10.2016 4:01 PM '
SÉLECTIONNER StringDate = @DateTimeValue,
[German-Style] = CONVERTIR(date / heure, @DatetimeValue, 104)
– Double conversion à l'US-Style 107 avec siècle: 23 oct. 2016
ENSEMBLE @DateTimeValue='10 / 23/16 '
SÉLECTIONNER StringDate=@DateTimeValue,
[US-Style] = CONVERTIR(varchar, CONVERTIR(date / heure, @DateTimeValue),107)
– paramètre SQL dateformat
UTILISATION AdventureWorks2008;
SÉLECTIONNER convertir(date / heure,'14 / 05/08 ')
/ * Msg 242, niveau 16, état 3, ligne 1
La conversion d’un type de données varchar en un type de données datetime a entraîné
dans une valeur hors limites.
* /
ENSEMBLE FORMAT DE DATE ymd
SÉLECTIONNER convertir(date / heure,'14 / 05/08 ') – 2014-05-08 00: 00: 00.000
– Définition de DATEFORMAT sur UK-Style
ENSEMBLE FORMAT DE DATE dmy
SÉLECTIONNER convertir(date / heure,'20 / 05/14 ') – 2014-05-20 00: 00: 00.000
– Définition de DATEFORMAT sur US-Style
ENSEMBLE FORMAT DE DATE mdy
SÉLECTIONNER convertir(date / heure,'05 / 20/14 ') – 2014-05-20 00: 00: 00.000
SÉLECTIONNER convertir(date / heure,'05 / 20/2014 ') – 2014-05-20 00: 00: 00.000
ALLER
————
– Date et heure SQL éliminant les caractères de division
————
– MSSQL remplace la fonction de chaîne
– concaténation de chaîne T-SQL (+)
UTILISATION AdventureWorks2008;
SÉLECTIONNER remplacer(convertir(VARCHAR(dix),avoir un rendez-vous(),102),'.','')
– 20120315
SÉLECTIONNER remplacer(convertir(VARCHAR(dix),avoir un rendez-vous(),111),'/','')
– 20120315
– SQL triple remplacer
SÉLECTIONNER remplacer(remplacer(remplacer(convertir(VARCHAR(25),
avoir un rendez-vous(),20),'-',''), ':',''),'','')
– 20120529090427
– T-SQL concaténant à partir d'une conversion de date et d'heure
SÉLECTIONNER remplacer(convertir(VARCHAR(dix),avoir un rendez-vous(),111),'/','') +
remplacer(convertir(VARCHAR(8),avoir un rendez-vous(),108),':','')
– 20120315085654
————
– Conversion de dates de chaîne à partir d'une table
————
– Créer et remplir une table de test avec une date de chaîne
UTILISATION tempdb;
SÉLECTIONNER
DepartmentID,
Dernière mise à jour=CONVERTIR(varchar,
dateadd(journée, DepartmentID, Date modifiée),100)
DANS DeptInfo
DE AdventureWorks.Ressources humaines.département
SÉLECTIONNER * DE DeptInfo
/ * Résultats partiels
DepartmentID LastUpdate
1 juin 2 1998 00h00
2 juin 3 1998 00h00
* /
– Convertir une colonne de date de chaîne en date / heure
SÉLECTIONNER
DepartmentID,
DernierChangeDate=convertir(date / heure, Dernière mise à jour)
DE DeptInfo
/ * Résultats partiels
DepartmentID LastChangeDate
1 1998-06-02 00: 00: 00.000
2 1998-06-03 00: 00: 00.000
* /
LAISSEZ TOMBER TABLE DeptInfo
ALLER
————————————————– —–
– Date et heure de la chaîne de caractères ensemble et séparément
————————————————– —–
– Chaîne de conversion SQL en date-heure
SÉLECTIONNER JETER('20100315 16:40:31' COMME date / heure)
– Résultat: 2010-03-15 16: 40: 31.000
– Chaîne de conversion SQL à date – heure partie 0
SÉLECTIONNER JETER('20100315' COMME date / heure)
– Résultat: 2010-03-15 00: 00: 00.000
– Chaîne de conversion SQL en heure – date partie 1900-01-01
SÉLECTIONNER JETER('16: 40: 31 ' COMME petit temps)
– Résultat: 1900-01-01 16:41:00
————
– SQL DATEDIFF avec la date de chaîne
————
DÉCLARER @sdate varchar(dix)
ENSEMBLE @sdate = '2010/03/15'
– DATEDIFF (delta) entre deux dates en mois
SÉLECTIONNER AVOIR UN RENDEZ-VOUS(), DATE DIFF (MOIS, AVOIR UN RENDEZ-VOUS(), @sdate)
SÉLECTIONNER AVOIR UN RENDEZ-VOUS(), DATE DIFF (MOIS, AVOIR UN RENDEZ-VOUS(), JETER(@sdate comme date / heure))
SÉLECTIONNER AVOIR UN RENDEZ-VOUS(), DATE DIFF (MOIS, AVOIR UN RENDEZ-VOUS(), CONVERTIR(date / heure,@sdate))
SÉLECTIONNER AVOIR UN RENDEZ-VOUS(), DATE DIFF (MOIS, AVOIR UN RENDEZ-VOUS(), CONVERTIR(date / heure,@sdate,111))
– Résultats de l'entreprise pour ci-dessus: 2008-12-29 11: 04: 51.097 15
– Conversion SQL en date-heure avec un style incorrect (111 corrects, 112 incorrects)
SÉLECTIONNER AVOIR UN RENDEZ-VOUS(), DATE DIFF (MOIS, AVOIR UN RENDEZ-VOUS(), CONVERTIR(date / heure,@sdate,112))
/* ERREUR
Msg 241, Niveau 16, Etat 1, Ligne 11
La conversion a échoué lors de la conversion de la date et / ou de l'heure d'une chaîne de caractères.
* /
————
————
– Instructions pour la recherche de chaînes de date SQL Server – Comparaison de dates
————
– Date égal recherche
DÉCLARER @ Date1 date / heure, @ Date2 date / heure, @ Date3 date / heure
ENSEMBLE @ Date1 = '2012-01-01'
ENSEMBLE @ Date2 = '2012-01-01 00: 00: 00.000'
ENSEMBLE @ Date3 = '2012-01-01 11:00'
SÉLECTIONNER @ Date1, @ Date2, @ Date3
– Date-only @ Date1 est traduit en date-heure
– 2012-01-01 00: 00: 00.000 2012-01-01 00: 00: 00.000 2012-01-01 11: 00: 00.000
– Ce qui suit est une comparaison date-heure, pas une comparaison avec date uniquement
SI (@ Date1 = @ Date2) IMPRESSION 'ÉGAL' AUTRE IMPRESSION 'INÉGAL'
– EQUAL
– Le test d'égalité échoue parce que les parties temporelles sont différentes
SI (@ Date1 = @ Date3) IMPRESSION 'ÉGAL' AUTRE IMPRESSION 'INÉGAL'
— INÉGAL
– La date de chaîne convertie implicitement en date / heure pour le test d'égalité
SI ('2012-01-01' = @ Date3) IMPRESSION 'ÉGAL' AUTRE IMPRESSION 'INÉGAL'
— INÉGAL
– Un moyen sûr de rechercher une date spécifique
SÉLECTIONNER COMPTER(*) DE AdventureWorks.Ventes.SalesOrderHeader
OÙ '2004/02/01' = CONVERTIR(varchar, Date de commande,111)
– 244
— Équivalent à
SÉLECTIONNER COMPTER(*) DE AdventureWorks.Ventes.SalesOrderHeader
OÙ Date de commande ENTRE '2004/02/01 00: 00: 00.000' ET '2004/02/01 23: 59: 59.997'
– 244
– Moyen sûr de rechercher une plage de dates spécifique
SÉLECTIONNER COMPTER(*) DE AdventureWorks.Ventes.SalesOrderHeader
OÙ CONVERTIR(varchar, Date de commande,111) ENTRE '2004/02/01' ET '2004/02/14'
– 1059
— Équivalent à
SÉLECTIONNER COMPTER(*) DE AdventureWorks.Ventes.SalesOrderHeader
OÙ Date de commande ENTRE '2004/02/01 00: 00: 00.000' ET '2004/02/14 23: 59: 59.997'
– 1059
SÉLECTIONNER COMPTER(*) DE AdventureWorks.Ventes.SalesOrderHeader
OÙ Date de commande > = '2004/02/01 00: 00: 00.000'
ET Date de commande < '2004/02/15 00: 00: 00.000'
– 1059
————
————
– SQL Server convertit une chaîne en smalldatetime
————
– Conversion T-SQL du format mm / jj / aaaa au format smalldatetime
SÉLECTIONNER CONVERTIR(petit temps, '10 / 23/2016 ', 101)
– 2016-10-23 00:00:00
– MSSQL convertir du format jj / mm / aaaa au format smalldatetime
SÉLECTIONNER CONVERTIR(petit temps, '23 / 10/2016 ', 103)
– 2016-10-23 00:00:00
– Le 23ème mois est hors limites
SÉLECTIONNER CONVERTIR(petit temps, '23 / 10/2016 ', 101)
/ * Msg 242, niveau 16, état 3, ligne 1
La conversion d'un type de données varchar en un type de données smalldatetime a entraîné
dans une valeur hors limites.
* /
————
– Traduire / convertir chaîne / texte heures et minutes en secondes
————
DÉCLARER @TimeStr varchar(16) = '20: 49: 30 '
SÉLECTIONNER PARSENAME(REMPLACER(@TimeStr,':','.'),1)
+ PARSENAME(REMPLACER(@TimeStr,':','.'),2) * 60
+ PARSENAME(REMPLACER(@TimeStr,':','.'),3) * 3600
– 74970
————
— Articles Liés:
http://sqlusa.com/bestpractices/datetimeconversion/
CAST et CONVERT (Transact-SQL)
10 raisons de convertir explicitement les types de données SQL Server







Commentaires
Laisser un commentaire