kzen.dev
  • Questions
  • Tags
  • Utilisateurs
Notifications
Récompenses
Inscription
Une fois inscrit, vous serez informé des réponses et des commentaires à vos questions.
Connectez-vous
Si vous avez déjà un compte, connectez-vous pour vérifier les nouvelles notifications.
Il y aura des récompenses pour les questions, réponses et commentaires ajoutés.
Détails
Source
Editer
 Mari
Mari
Question

Échec de la conversion de la date et/ou de l'heure à partir d'une chaîne de caractères lors de l'insertion d'une date.

J'essayais de créer une table comme suit,

create table table1(date1 datetime,date2 datetime);

J'ai d'abord essayé d'insérer des valeurs comme ci-dessous,

insert into table1 values('21-02-2012 6:10:00 PM','01-01-2001 12:00:00 AM');

Il a donné une erreur disant,

Canot convert varchar to datetime (Impossible de convertir un paramètre en date)

Ensuite, j'ai essayé le format ci-dessous comme l'un des post suggéré par notre stackoverflow,

insert into table1 values(convert(datetime,'21-02-2012 6:10:00 PM',5)
                          ,convert(datetime,'01-01-2001 12:00:00 AM',5));

Mais j'obtiens toujours l'erreur suivante,

Échec de la conversion de la date et/ou de l'heure à partir d'une chaîne de caractères.

Avez-vous des suggestions ?

143 2013-01-02T08:49:59+00:00 3
 marc_s
marc_s
Question modifiée 2 janvier 2013 в 8:52
Programmation
sql
sql-server
Vidéos populaires
Langage C -19- : 10 Exercices corrigés sur les chaînes de caractères (Darija)
Langage C -19- : 10 Exercices corrigés sur les chaînes de caractères (Darija)
il y a 2 ans
Extraire l’année, le mois et le jour d’une date sur Excel
Extraire l’année, le mois et le jour d’une date sur Excel
il y a 3 ans
La conversion des unités de temps : les nombres décimaux | Mathématiques | Alloprof
La conversion des unités de temps : les nombres décimaux | Mathématiques | Alloprof
il y a 4 ans
Automatisez la saisie des dates et des heures avec la recopie incrémentée d'Excel
Automatisez la saisie des dates et des heures avec la recopie incrémentée d'Excel
il y a 3 ans
CALCULER L'AGE A PARTIR DE LA DATE DE NAISSANCE
CALCULER L'AGE A PARTIR DE LA DATE DE NAISSANCE
il y a 5 ans
regarder : creer la date et l'heure sous delphi 7
regarder : creer la date et l'heure sous delphi 7
il y a 6 ans
Comment calculer les dates d’échéances en fonction des dates d’émission de factures sur Excel
Comment calculer les dates d’échéances en fonction des dates d’émission de factures sur Excel
il y a 3 ans
Excel - Formules DATEVAL et TEMPSVAL - Convertir un texte en date et en temps
Excel - Formules DATEVAL et TEMPSVAL - Convertir un texte en date et en temps
il y a 2 ans
Historique Taux de Change pour toutes les dates
Historique Taux de Change pour toutes les dates
il y a 1 an
Le temps - conversion et opérations
Le temps - conversion et opérations
il y a 8 ans
Cours : Conversion des dates anglais / français sous Excel
Cours : Conversion des dates anglais / français sous Excel
il y a 7 ans
sql date conversion | Convert Date format into DD/MM/YYYY format in SQL Server
sql date conversion | Convert Date format into DD/MM/YYYY format in SQL Server
il y a 2 ans
04.2 - Étapes de conception d'une base de données
04.2 - Étapes de conception d'une base de données
il y a 5 ans
Ajouter ou déduire un jour d'une date
Ajouter ou déduire un jour d'une date
il y a 3 ans
Comment calculer la différence entre 2 dates sur Excel
Comment calculer la différence entre 2 dates sur Excel
il y a 5 ans
« Précédent
Suivant »
Cette question a 1 réponse en anglais, pour les lire connectez-vous à votre compte.
Solution / Réponse
 marc_s
marc_s
2 janvier 2013 в 8:51
2013-01-02T08:51:40+00:00
Détails
Source
Editer
#18113458

Il existe de nombreux formats pris en charge par SQL Server - voir les [MSDN Books Online sur CAST et CONVERT][1]. La plupart de ces formats dépendent des paramètres que vous avez définis. Par conséquent, ces paramètres peuvent fonctionner dans certains cas, mais pas dans d'autres.

La solution consiste à utiliser le format de date ISO-8601 (légèrement adapté) qui est pris en charge par SQL Server. Ce format fonctionne toujours**, quels que soient la langue et les paramètres du format de date de SQL Server.

Le [format ISO-8601][2] pris en charge par SQL Server existe en deux versions :

  • YYYYMMDD pour les dates uniquement (pas de portion de temps) ; notez ici : sans tirets, c&#8217est très important ! YYYY-MM-DD n'est PAS indépendant des paramètres de format de date de votre serveur SQL et ne fonctionnera PAS dans toutes les situations !

ou :

  • YYYY-MM-DDTHH:MM:SS pour les dates et les heures - notez ici : ce format a des tirets (mais ils peuvent être omis), et un T fixe comme délimiteur entre la partie date et heure de votre DATETIME.

Ceci est valable pour SQL Server 2000 et plus récent.

Donc, dans votre cas concret, utilisez ces chaînes de caractères :

insert into table1 values('2012-02-21T18:10:00', '2012-01-01T00:00:00');

et tout devrait bien se passer (remarque : vous devez utiliser le format international 24 heures plutôt que le format 12 heures AM/PM).

Alternativement : si vous êtes sur SQL Server 2008 ou plus récent, vous pouvez aussi utiliser le type de données DATETIME2 (au lieu du simple DATETIME) et votre INSERT actuel fonctionnera sans aucun problème ! :-) DATETIME2 est bien meilleur et bien moins pointilleux sur les conversions - et c&#8217est de toute façon le type de données date/heure recommandé pour SQL Server 2008 ou plus récent.

SELECT
   CAST('02-21-2012 6:10:00 PM' AS DATETIME2),     -- works just fine
   CAST('01-01-2012 12:00:00 AM' AS DATETIME2)   -- works just fine  

Ne me demandez pas pourquoi ce sujet est si délicat et quelque peu déroutant - c'est comme ça. Mais avec le format YYYYMMDD, vous devriez vous en sortir pour n'importe quelle version de SQL Server et pour n'importe quelle langue et paramètre de format de date dans votre SQL Server.

[1] : http://msdn.microsoft.com/en-us/library/ms187928.aspx [2] : http://msdn.microsoft.com/en-us/library/ms180878.aspx

B.  Clay Shannon
B. Clay Shannon
Réponse modifiée 2 novembre 2015 в 6:32
140
0
Ashraf Abusada
Ashraf Abusada
6 juin 2015 в 8:18
2015-06-06T20:18:34+00:00
Détails
Source
Editer
#18113460

La conversion dans le serveur SQL échoue parfois non pas à cause des formats de date ou d'heure utilisés, mais simplement parce que vous essayez de stocker des données erronées qui ne sont pas acceptables pour le système.

Exemple :

Créer la Table MyTable (MyDate);

Insert Into MyTable(MyDate) Values ('2015-02-29&#39 ;);

Le serveur SQL affiche l'erreur suivante :

La conversion a échoué lors de la conversion de la date et/ou de l'heure à partir d'une chaîne de caractères.

La raison de cette erreur est qu'il n'existe pas de date (Feb-29) dans l'année (2015).

22
0
 Raj
Raj
2 janvier 2013 в 9:01
2013-01-02T09:01:07+00:00
Détails
Source
Editer
#18113459

Réponse simple - 5 est l'italien "yy&quot ; et 105 est l'italien "yyyy&quot ;. Par conséquent :

SELECT convert(datetime,'21-02-12 6:10:00 PM',5)

fonctionnera correctement, mais

SELECT convert(datetime,'21-02-12 6:10:00 PM',105)

donnera une erreur.

De même,

SELECT convert(datetime,'21-02-2012 6:10:00 PM',5)

donnera une erreur, alors que

SELECT convert(datetime,'21-02-2012 6:10:00 PM',105)

fonctionnera.

Chankey Pathak
Chankey Pathak
Réponse modifiée 7 juin 2017 в 5:34
13
0
Ajouter une question
Catégories
Toutes
Technologie
Culture / Loisirs
Vie / Arts
Science
Professionnel
Entreprises
Utilisateurs
Tous
Nouveau
Populaire
1
Роман Азаров
Enregistré il y a 1 semaine
2
Mansur Zakirov
Enregistré il y a 1 semaine
3
Тагир Мамедов
Enregistré il y a 1 semaine
4
Алексей Толманов
Enregistré il y a 1 semaine
5
Valeriu Vodnicear
Enregistré il y a 3 semaines
CS
DA
DE
EL
ES
FI
FR
ID
IT
NL
PL
PT
RU
SK
TR
ZH
© kzen.dev 2023
Source
stackoverflow.com
sous licence cc by-sa 3.0 avec l'attribution