SQL convertir int de temps
J'ai une base de données qui affiche l'heure comme un entier. Cependant, je suis désireux de sortie ce en rapport avec le format correct. C'est le format que j'aimerais changer:
par exemple.
183000 deviendrait 18:30
500 deviendrait 00:05
160000 deviendrait 16:00
et ainsi de suite.
J'ai eu un coup d'oeil et CAST et CONVERT mais pas succefully réussi à faire passer ce moment dans le format correct.
OriginalL'auteur andy | 2010-09-15
Vous devez vous connecter pour publier un commentaire.
En supposant que votre entrée sera toujours un int, vous pouvez analyser avec quelque chose comme:
Je serais CERTAINEMENT chercher à modifier ce champ à un moment ou un champ datetime, que ce niveau de la conversion n'est pas conseillé, surtout pour une très grande base de données utilisée. Il est juste vraiment appris à avoir une meilleure façon de stocker vos données.
À l'aide d'un int valeur de cette façon permet un grand nombre de données de mauvaise qualité, sans ajouter beaucoup de vérifications supplémentaires et/ou des contraintes sur les entrées (c'est à dire: 260000, 127900, etc.)
OriginalL'auteur Nathan Wheeler
ressemble vous avez besoin de diviser par 100 pour obtenir les secondes, diviser par 10 000 pour obtenir le procès-verbal, et de diviser par 1 000 000 pour obtenir les heures, puis le format de ces valeurs comme une chaîne de caractères, l'insertion d'un deux-points entre les heures et les minutes, comme
OriginalL'auteur Beth
Premier casting pour un champ de type varchar et de convertir tous les temps à 4 chiffres addition de zéros si nécessaire (500 deviendrait 0500)et puis briser le champ avec concantenation Gauche(myfield,2) + ':' + droit(myfield,2)
C'est une chose stupide à faire chaque fois que vous exécutez un rapport, il est un gaspillage de ressources de serveur. Si possible, modifiez le champ de type varchar et runthe code une seule fois. Si pas possible, pouvez-vous ajouter un champ formaté et avoir un déclencheur faire le formatage n'en matière d'insertion (vous aurez toujours besoin de mettre à jour le champ la première fois? Éventuellement une contrainte ferait à la place d'un déclencheur, mais cela dépendra de la base de données.
OriginalL'auteur HLGEM
Je suis en supposant que vous êtes sur SQL Server basé sur l'utilisation de
CONVERT
et de vos questions.Vous pouvez utiliser
DATEADD
pour cela aussi.OriginalL'auteur Martin Smith