J'essaie de mettre à jour et de convertir une colonne qui a des valeurs différentes, telles que des minutes de format numéros comme: 120, 10, 55, 280 P>
Autre format est comme: 0011, 0017, 0120 p>
Autre format est comme: 00:19, 02:55 p>
Je voudrais que la colonne soit dans un format, qui est "HH: mm", donc par exemple, la valeur 120 sera 02:00, la valeur 55 sera 00:55 et la valeur 280 sera 04:40 et Les valeurs comme 0011 doivent être 00:11 et ainsi de suite sur p>
J'utilise SQL Server 2012 et la colonne est Nvarparar (12) P>
3 Réponses :
Vous pouvez essayer quelque chose comme ci-dessous.
Vous pouvez essayer la requête suivante,
select RIGHT('00'+CAST(55/60 AS VARCHAR(2)),2) +
':' +RIGHT('00'+CAST(55%60 AS VARCHAR(2)),2)
C'est le plus simple que je pourrais proposer cela conforme aux spécifications de votre question et les clarifications de vos réponses aux commentaires et ne se bloque pas si les valeurs varcharises contiennent des données non valides / inconnues:
Pouvez-vous fournir des mêmes données sous la forme de déclarations DDL et DML s'il vous plaît? Votre message semble impliquer que vous stockez plusieurs formats dans une seule colonne, ce qui signifie (premièrement) que vous stockez des données numériques et des données temporelles, en tant que
varchar code>, mais signifie également que ce serait impossible de déterminer quelle valeur est correcte. Par exemple, est'1000' code> comme heure10:00 code> ou16:40 code>? Qu'en est-il de'130' code>, est que01:30 code> ou02:10 code>? Basé sur votre description, cela pourrait être soit, et si tel est le cas, vous ne pouvez pas faire ce que vous voulez; efficacement, vos données ont perdu tout ce sens.Quelle version de SQL Server utilisez-vous?
Quelle est la valeur de
240 code>?'02: 40 ' code> ou'04: 00' code>?@Gordonlinoff je pense
'04: 00 ' code> ...;)Qu'advient-il de valeurs entre 1000 et 1439? Celles-ci pourraient être des minutes des minutes pour 16h40 à 23:59 ou des valeurs de temps 10h00 à 14h39
La possibilité de valeurs ambiguës n'autorise aucune solution automatisée.
Je vais juste laisser cela ici et vous suggérer de le lire. sqlblog.org/2009/ 10/12 / ...
@Larnu La colonne est Nvarchar (12), les résultats des valeurs que vous avez mentionnés doivent être considérés comme des chiffres de minutes (tout nombre sans points de temps est minutes), par exemple, 1000 minutes devraient être 16h40 (ou tout autre sens qu'il s'agit de 16h: 40m ), et 130 minutes doivent être 02:10.
@Barthofland SQL Server 2012
@Gordonlinoff il serait 04:00
@Johnhc 1000 serait 16h40 (ou autre sens qu'il est de 16h: 40m) et 1439 serait 23:59 (ou une autre signification 23 heures et 59 minutes ou 23h: 59m)