J'ai l'interface de procédure suivante: Lorsque je l'appelle de cette façon: p> i Obtenir cette erreur: p> msg 8114, niveau 16, état 5
Erreur lors de la conversion de type de données Nvarchar en DateTime. P>
blockQuote> p>
4 Réponses :
Selon vos paramètres régionaux, le paramètre que vous transmettez pour Vous devez passer la date en tant que: p> @TimeItemAdded code> pourrait ne pas être reconnu.
20120720
Ce n'est pas un format sûr. Définir la langue française; Sélectionnez Convert (DateTime, '2012-07-20 00:00:00'); Code> Données
MSG 242, niveau 16, état 3, ligne 2; LA CONVERSION D'UN TYPE DE DONNÉES VARCHAR EN TYPE DE DONNées DateTime A Créé un VALEUR HORTIENS. Code> Les formats sécurisés pour DateTime sont
yyyymmdd CODE> ou
AAA AAAIM-MM-DDTHH: MM: MM: MM: Ss.nnn code> - que
t code> est important.
@Aaronbertrand - fascinant; enlevé le temps pour la cohérence
Toujours pas de sécurité, même sans le temps. Les tirets sont le problème. En français (et d'autres locaux), il est interprété comme AAAAYY-DD-MM code>. De toute évidence, il n'y a pas de 20ème mois.
yyyymmdd code> est à l'abri de ce problème.
Intéressant; Nous avons des sites français et je jure que cela n'a jamais marché, mais je te crois.
Utilisez un littéral de chaîne sans ambiguïté pour votre date. Dans ce cas: meilleur encore, assurez-vous de passer un paramètre fortement typé dans lequel vous savez que la date est correcte. Idéalement, cela ne devrait jamais être présenté comme une chaîne dans n'importe quel format. P> Les formats régionaux tels que M / D / Y sont de mauvaises nouvelles, car vous ne pouvez pas vous assurer qu'ils fonctionnent compte tenu de la session de l'utilisateur, DateFormat, Paramètres de langue, les paramètres régionaux sur la machine, etc. p> p>
Ce lien contient tous les formats DateTime, leurs connaissances http://www.sql-server-helper.com/tips/date -Formats.aspx
Vous pouvez le transmettre en tant que varchar et le convertir explicitement en une date d'heure à l'aide du code de format de date approprié. Par exemple: P>
SELECT CONVERT(DATETIME, '20/07/2012 00:00:00', 103)
Je ne suis pas d'accord que vous devriez changer le paramètre sur Varchar. Fixez le format (ou utilisez le bon type de données) le plus tôt possible. Si vous changez le paramètre en Varchar, les gens peuvent transmettre tout ce qu'ils veulent. mm / dd / aaaa code> va casser, par exemple;
06/07/2012 code> stockera simplement la mauvaise date en silence et
07/20/2012 code> générera une exception.
SQL Lisez votre date comme 7/20/2012 code> qui n'est pas valide, vous pouvez transmettre vos objets de date avec un format plus sûr
AAAAY-MM-DD code> par exemple:
2012-07-20 code> p>
Quelle valeur passez-vous au paramètre code> code> dans
insertemdetails code>?
20/07/2012 00:00:00 comme date et heure
Vérifiez ceci: Stackoverflow.com/Questtions/41867371/...