SQL Server 2008 Casting varchar datetime
Je suis en cours d'exécution dans un problème de casting un VARCHAR dans une table dans un DATETIME et ensuite l'utiliser dans une comparaison. Le format ('2010-09-02 10:38:31.000') semble être correct sur tous les dossiers, et je peux sélectionner les données sans aucun problème. Cependant, si j'essaie d'utiliser le new datetime dans la clause where, j'obtiens l'erreur: échec de la Conversion lors de la conversion de la date et/ou le temps de chaîne de caractères.
Donc, juste pour être clair, cela fonctionne:
SELECT Field1, Field2, CAST(Field3 AS DATETIME) AS DateTaken FROM MyTable;
Qui retourne toutes les données comme prévu, et il n'y a pas les dates nulles. Le suivant échoue avec le mentionné précédemment erreur.
SELECT Field1, Field2 FROM MyTable WHERE CAST(Field3 AS DATETIME) > @startDate;
J'ai essayé à l'aide d'une vue de récupérer les données, mais il avait la même erreur. Ensuite, j'ai essayé de créer une table temporaire pour les données comme si...
SELECT Field1, Field2, CAST(Field3 AS DATETIME) AS Field3 INTO _MyTable;
SELECT Field1, Field2 FROM _MyTable WHERE Field3 > @startDate;
Qui fonctionne avec succès.
L'ensemble de mes recherches juste conduit à la mise en forme incorrecte dates et /ou les paramètres régionaux provoquant havok qui ne semble pas être la cause dans mon cas. Je préfère ne pas en créer un tableau à chaque fois que j'ai besoin d'utiliser un DATETIME plâtre, c'est ce que je fais mal ici? L'aide est très apprécié!
- Quel est le type de données de la @date de début variable? Et quelle est la valeur utilisez-vous pour cela?
- Dans la version finale, il sera un plâtre à partir d'un VARCHAR en tant que bien, mais dans le but d'éliminer JETÉ comme une variable, j'ai l'aide de la fonction GETDATE()
- pourquoi ne pas simplement passer un datetime et d'éviter le casting?
Vous devez vous connecter pour publier un commentaire.
modifier # 3..............
modifier # 2..............
J'ai fait un test sur ma db...
Résultats:
la modification de la date de début de param 10/1/2010
Résultats:
1ère réponse.................
Avez-vous essayer de les Convertir?
Envisagez de forcer spécifiques dateformat à l'aide de
SET DATEFORMAT ymd
Afin de vérifier que le problème n'est pas avec les données (généralement c'est le cas, avec cette erreur), essayez d'exécuter l'instruction suivante. Si vous obtenez des lignes de sortie alors que les données sont probablement la cause de l'erreur.