Dans une base de données SQL, je fais quelques sélections, qui obtiennent une durée (résultat d'une soustraction entre deux dates) en secondes comme un int. Mais je veux formater ce résultat sous une forme lisible par l'homme comme 'hh: mm' ou 'dd: hh'. Est-ce possible en SQL et comment puis-je réaliser cela?Comment convertir en SQL le nombre de secondes en une durée lisible par l'homme?
Répondre
Dans SQL Server 2005, vous pouvez utiliser les éléments suivants:
select convert(varchar(8), dateadd(second, [SecondsColumn], 0), 108)
qui convertit tout d'abord les secondes en une date après 1900-01-01, et obtient alors les hh: mm: ss partie.
Si la colonne est plus de 24 heures, ce sera rouler, si vous voulez jours et heures dans ce cas, faites quelque chose comme:
case when SecondsColumn> (24*60*60)
then
cast(datepart(day,datediff(dd, 0, dateadd(second, SecondsColumn, 0))) as varchar(4))
+ 'd' + convert(varchar(2), dateadd(second, SecondsColumn, 0), 108)
else
convert(varchar(8), dateadd(second, SecondsColumn, 0), 108)
end
Chaque base de données le fait différemment. J'utiliser PostgreSQL et il le fait comme si:
select to_char(my_date - my_other_date, 'HH:MM:SS');
Vous devrez consulter le manuel pour la base de données que vous utilisez.
En supposant que vous avez secondes:
DECLARE @DurationSeconds INT
-- 25h 45m 14s
SET @DurationSeconds = (25 * 3600) + (45 * 60) + (14)
SELECT
@DurationSeconds,
@DurationSeconds/3600 hours,
@DurationSeconds % 3600/60 minutes,
@DurationSeconds % (3600/60) seconds
Je vais laisser la tâche de mise en forme bien à vous. :-)
Il n'y a pas de standard, bien que de nombreux SGBD aient leur propre syntaxe personnalisée.
En général, il est préférable d'effectuer un travail de formatage pour la lisibilité humaine dans la couche de présentation de votre application plutôt que dans la base de données.
Dans Oracle SQL:
-- 86,400 seconds in a day
-- 3,600 seconds in an hour
-- 60 seconds in a minute
select duration, -- seconds
trunc((duration)/86400) || ':' || -- dd
trunc(mod(duration,86400)/3600) || ':' || -- hh
trunc(mod(mod(duration,86400),3600)/60) || ':' || -- mm
mod(mod(mod(duration,86400),3600),60) -- ss
as human_readable
from dual
;
- 1. sybase sql façon de convertir les secondes en heures en minutes et en secondes
- 2. Comment convertir les secondes en heures, minutes et secondes?
- 3. mySQL - résultats par nombre de secondes
- 4. iPhone NSString convertir en texte lisible
- 5. Comment puis-je convertir une durée ISO 8601 à l'aide de XSLT 1.0 secondes
- 6. Convertir un nombre entier en couleur, en commençant par le rouge et en passant par
- 7. Convertir un nombre en Excel en chaîne?
- 8. Comment convertir l'entrée de l'utilisateur en heures, minutes, secondes
- 9. Comment puis-je convertir une chaîne en nombre en Perl?
- 10. Comment convertir une chaîne binaire en nombre en Perl?
- 11. Convertir le nombre en colonne Excel correspondante
- 12. Comment convertir des secondes en HH: MM: SS en utilisant T-SQL
- 13. Nombre de lignes affectées par une UPDATE en PL/SQL
- 14. Comment convertir un nombre en octet?
- 15. Texte de la bande SQL et convertir en nombre entier
- 16. En SQL comment puis-je convertir un type de données monétaire en nombre décimal?
- 17. Comment puis-je convertir HH: MM: SS en quelques secondes en utilisant C# .net?
- 18. convertir le texte de cellule excel en nombre poi
- 19. Comment convertir un nombre en bytearray en bit endian order
- 20. Comment convertir une sous-requête SQL en une jointure
- 21. Convertir SQL en LINQ en SQL
- 22. Convertir une instruction SQL en Linq
- 23. Supprimer le colon et le convertir en nombre dans XSLT
- 24. Classe ObjC/Cocoa pour convertir la taille en chaîne lisible par l'homme?
- 25. Convertir par programme une vidéo en FLV
- 26. Comment convertir une requête sql en une requête linq
- 27. Conversion de chaîne en durée et retour
- 28. Durée Fonction vbscript (vbs)
- 29. Convertir un plist formaté binaire Mac OS X en format lisible en C#
- 30. Convertir un nombre en chaîne binaire
Les travaux suivants: sélectionnez to_char (intervalle '' 1000s, 'HH24: MI: SS'); ou sélectionnez to_char (now() - pg_postmaster_start_time(), 'DDD' jours "HH24: MI: SS '); –
Dans quel dialecte SQL? – Tomalak