Bonjour à tous j'essaie d'analyser un fichier xml dans SQl Server 2005. J'ai un champ datetime dans le xml qui est une chaîne comme suit: '20110805060028.387'. Je veux convertir ceci en un champ datetime dans le serveur de SQL, mais je me bats avec la syntaxe. Est-il possible d'obtenir jj/mm/aaaa hh: mm: ss.ms (ms = micro secondes) à partir de cette chaîne?Comment convertir une chaîne en date-heure en utilisant T-SQL?
2
A
Répondre
6
Ce n'est pas un format pris en charge, donc vous en aurez besoin;
declare @dt varchar(42)= '20110805060028.387'
--convert to '20110805 06:00:28.387'
select cast(stuff(stuff(stuff(@dt, 9, 0, ' '), 12, 0, ':'), 15, 0, ':') as datetime)
>>2011-08-05 06:00:28.387
3
Substring est votre ami ici:
DECLARE @Value NVarChar(50)
SET @Value = '20110805060028.387'
SELECT Convert(DateTime,
SubString(@Value, 1, 4) + '-' +
SubString(@Value, 5, 2) + '-' +
SubString(@Value, 7, 2) + ' ' +
SubString(@Value, 9, 2) + ':' +
SubString(@Value, 11, 2) + ':' +
SubString(@Value, 13, 10))
(en passant, je suis volontairement ne suit pas le format « jj/mm/aaaa » lors de la création d'une chaîne de date analysable, mais plutôt une organisation internationale (non format assez standard ISO) que le serveur SQL lira correctement quels que soient les paramètres DATEFORMAT
du serveur)
1
DECLARE @parsedValue VARCHAR(MAX)
DECLARE @rawDateValue VARCHAR(MAX)
SET @rawDateValue = '20110805060028.387'
SET @parsedValue = SUBSTRING(@rawDateValue, 1, 4) + '/' +
SUBSTRING(@rawDateValue, 5, 2) + '/' +
SUBSTRING(@rawDateValue, 7, 2) + ' ' +
SUBSTRING(@rawDateValue, 9, 2) + ':' +
SUBSTRING(@rawDateValue, 11, 2) + ':' +
SUBSTRING(@rawDateValue, 13, 2) + ':' +
SUBSTRING(@rawDateValue, 16, 3)
SELECT CONVERT(datetime, @parsedValue)
1
Mon point (nécessairement le meilleur):
DECLARE @val VARCHAR(30)='20110805060028.387'
SELECT LEFT(@val,4) [yyyy], RIGHT(LEFT(@val,6),2)[mm], RIGHT(LEFT(@val,8),2)[dd],
RIGHT(LEFT(@val,10),2)[hh], RIGHT(LEFT(@val,12),2)[mi],
RIGHT(LEFT(@val,14),2)[ss],SUBSTRING(@val, 15,LEN(@val)-14) [ms]
DECLARE @date DATETIME
SELECT @date = CAST(LEFT(@val,4) + '-' + RIGHT(LEFT(@val,6),2) + '-' +
RIGHT(LEFT(@val,8),2) + ' ' + RIGHT(LEFT(@val,10),2) + ':' +
RIGHT(LEFT(@val,12),2) + ':' + RIGHT(LEFT(@val,14),2) +
SUBSTRING(@val, 15,LEN(@val)-14) AS DATETIME)
SELECT @date, DATEPART(MILLISECOND,@date)[ms], DATEPART(MONTH,@date)[MM]
Questions connexes
- 1. Comment convertir une fonction scalaire Tsql en une fonction table?
- 2. Comment convertir une chaîne en date en utilisant SimpleDateFormat?
- 3. Comment convertir une chaîne en date-heure en utilisant jquery?
- 4. En TSQL convertir JSON en XML?
- 5. Sous-chaîne en tsql en utilisant la longueur
- 6. chaîne Convertir en tableau en utilisant php
- 7. convertir en chaîne en utilisant python
- 8. Convertir des données SQL en une chaîne en utilisant PHP
- 9. Comment convertir une chaîne "nine" en 9?
- 10. Comment convertir une chaîne hexadécimale en décimale?
- 11. Comment convertir une chaîne en int?
- 12. Comment convertir une chaîne en un objet
- 13. Comment convertir une chaîne html en une chaîne formatée OOXML (Word 2007) en utilisant openxmlsdk2.0?
- 14. Comment convertir une chaîne en une table
- 15. Convertir une chaîne en XML en utilisant .Net
- 16. Convertir une chaîne en objet json en utilisant java
- 17. Convertir une chaîne en double
- 18. Comment convertir une chaîne strings en chaîne en C++?
- 19. convertir une chaîne en classe
- 20. Convertir une chaîne en Uri
- 21. Convertir une chaîne en xml en C#
- 22. Comment convertir datatable en chaîne json en utilisant json.net?
- 23. comment convertir chaîne en temps en utilisant jquery
- 24. comment convertir WIN32_FIND_DATA en chaîne?
- 25. Convertir une chaîne en variable en PHP?
- 26. Convertir une chaîne en streaming
- 27. Comment convertir chaîne en datetime
- 28. Comment convertir une chaîne en wstring en utilisant la valeur de la chaîne?
- 29. convertir une chaîne en Unicode en C
- 30. Comment convertir une chaîne en un point?
hmm, gentil, j'oublie toujours Stuff ... – Tao
Je n'oublie pas les choses, mais je n'aurais pas dû pouvoir accomplir ça. Merveilleuse réponse comme toujours! – TheVillageIdiot