J'ai des données formatées "2009-07-17T00: 00: 00-05: 00" dans la variable varchar. Comment est-ce que je peux convertir ces données au champ de datetime dans le serveur de MS SQL en utilisant la requête ou le TSQL?Valeur de date-heure SQL
Répondre
Si vous êtes sur SQL Server 2008, vous pouvez utiliser le type datetimeoffset
:
select cast('2009-07-17T00:00:00-05:00' as datetimeoffset)
Puisque vous êtes en 2005, datetimeoffset
type de données ne sont pas disponibles pour vous. Vous devez décider si vous souhaitez conserver les informations sur les fuseaux horaires séparément. Si vous voulez juste la datetime
partie, bande juste la partie de fuseau horaire de la chaîne et de le jeter comme datetime
:
select cast(left('2009-07-17T00:00:00-5:00', 19) as datetime)
d'une manière ou d'une autre ça ne marche pas. shows "Type datetimeoffset n'est pas un type de système défini." Que devrais-je faire? – THEn
Quelle version de SQL Server utilisez-vous? 'datetimeoffset' est nouveau en 2008. –
Microsoft SQL Server 2005 - 9.00.1406.00 (X64) 3 mars 2007 19:53:24 Copyright (c) 1988-2005 Microsoft Corporation Enterprise Edition (64 bits) sur Windows NT 5.2 (Build 3790: Service Pack 2) – THEn
Cast DATETIME ne fonctionnera pas, mais ce format est un format datetime XML valide, donc vous pouvez d'abord acheminer le transtypage à travers un type XML:
declare @d varchar(50);
select @d = '2009-07-17T00:00:00-05:00';
select x.value(N'.', N'datetime') from (select cast(@d as xml) as x) as t;
oui. ces données proviennent du fichier XML. J'ai utilisé SELECT [StartDate] DE OPENXML (@iTree, '/ List/DailyUpdate', 2) AVEC ([STARTDATE] varchar (50)) un moyen de le faire en SQL? J'ai essayé datetime il ne fonctionne pas ... – THEn
Pouvez-vous utiliser des méthodes XML au lieu d'OPENXML? OPENXML est un dinosaure ... Dites simplement 'SELECT xmlfield.value (N '(/ List/Daily/Update) [1]', N'datetime ') FROM table'. Avec OPENXML, vous devez utiliser la syntaxe WITH pour spécifier le schéma du retour et mapper StartDate à datetime: 'SELECT StartDate FROM OPENXML (...) WITH (DateDate de début)'. –
La requête de la réponse indique également "La conversion a échoué lors de la conversion de la date et de l'heure à partir de la chaîne de caractères". une idée ? – THEn
- 1. DateHeure, DateHeure? et LINQ
- 2. dateheure fonction dans php
- 3. Arrondi des objets DateHeure
- 4. inverse de SQL LIKE '% de la valeur%'
- 5. SQL Server 2005: Troncation de valeur
- 6. SQL: Obtenir la valeur à l'index dans la valeur binaire
- 7. Paramètres de valeur de table OR/M et Sql 2008
- 8. Attribution de la valeur d'affectation décimale de t-sql
- 9. SQL Valeur absolue sur plusieurs colonnes
- 10. LINQ to SQL - Sélectionner une valeur constante
- 11. Comment créer une table de paires nom-valeur dans SQL
- 12. Affichage de données à valeur nulle dans une requête SQL?
- 13. Utilisez une valeur de gauche en comparaison SQL main droite
- 14. Générer une valeur de colonne comme CSV T-SQL 2000
- 15. requête SQL retourne une valeur au lieu de comparer contre
- 16. SQL - Mise en forme valeur de réponse XML
- 17. moyenne une valeur de temps dans SQL Sever 2005
- 18. SQL QUERY remplacer la valeur NULL dans une ligne avec une valeur de la précédente valeur connue
- 19. SQL/T-SQL - comment obtenir la valeur MAX à partir de 1 des N colonnes?
- 20. ASP classique: comment utiliser deux fois une valeur SQL?
- 21. SQL Reader indiquant qu'aucune valeur n'existe, la requête semble correcte
- 22. Renvoyer plus d'une valeur à partir d'une instruction SQL
- 23. SQL Obtenir la première valeur non nulle des lignes parentales
- 24. Forcer la colonne SQL Server à une valeur spécifique
- 25. Vérification SQL si une valeur est une chaîne vide? Ce
- 26. SQL: Sélectionnez la valeur maximale pour chaque clé unique?
- 27. SQL Server 2000 - Valeur par défaut pour les champs varchar
- 28. SQL: Trouver les lignes où la valeur du champ diffère
- 29. Renvoyer une seule valeur avec Linq to SQL
- 30. SQL Server obtenir des résultats où la valeur est nulle
quoi de neuf '-05: 00'? une forme de millisecondes? – dotjoe
dotjoe: C'est le fuseau horaire. –
sont tous les champs 'comme '% -05: 00''? Va probablement devoir convertir en datetime standard en utilisant des fonctions de chaîne. – dotjoe