-2
votes

Comment convertir du format INT / min en HH: MM pour une colonne

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

Autre format est comme: 0011, 0017, 0120

Autre format est comme: 00:19, 02:55

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

J'utilise SQL Server 2012 et la colonne est Nvarparar (12)


11 commentaires

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 , mais signifie également que ce serait impossible de déterminer quelle valeur est correcte. Par exemple, est '1000' comme heure 10:00 ou 16:40 ? Qu'en est-il de '130' , est que 01:30 ou 02:10 ? 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 ? '02: 40 ' ou '04: 00' ?


@Gordonlinoff je pense '04: 00 ' ...;)


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)


3 Réponses :


0
votes

Vous pouvez essayer quelque chose comme ci-dessous. XXX


0 commentaires

0
votes

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)


0 commentaires

0
votes

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: xxx


0 commentaires