2017-10-03 1 views
0

J'ai une colonne qui contient des données NUMERIC (5,2). Les données sont représentatives des heures de début de quart. Quelques exemples sont 6.30, 10.30, 13.30 et 15.30. Quelle est la meilleure façon de convertir cela en un temps pour que je puisse faire des calculs de temps contre un autre domaine? L'autre champ est un champ datetime.Conversion de numérique en temps

Éditer: Les valeurs représentent des heures. Par exemple 6h30 = 06h30, 15h30 = 15h30.

+0

Que représentent ces valeurs? –

+0

Je suppose que vous n'avez pas accès au schéma de base de données ou que vous pourriez suggérer d'utiliser un champ [TIME] (https://technet.microsoft.com/en-us/library/bb677243 (v = sql.110) .aspx) au lieu. – Powerlord

+0

@powerlord J'apprécie la tentative de réparer la cause première, mais je fais des rapports externalisés pour une entreprise utilisant une base de données de fournisseurs tiers. Donc, dans ce cas, non. – chrj15

Répondre

2

Vous pouvez faire quelque chose comme ceci:

select dateadd(minute, floor(col) * 60 + (col % 1) * 100, 0) 
+0

pourriez-vous expliquer comment cela fonctionne? –

+1

@YogeshSharma. . . Il divise le nombre en deux parties, une pour les heures et une pour les minutes. Il convertit chaque partie en minutes et l'utilise pour créer l'heure. –

1

Remplacer le dot(.) avec colon(:) et comparer à votre colonne de temps.

select * 
from yourtable 
Where timecol = replace(numericcol,'.',':') 

compte tenu timecol est de type de données time, rhs seront convertis implicitement time.

+0

'6.3' est converti en' 6: 03 'plutôt que' 6: 30'. –