Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Sekunden formatieren (https://www.delphipraxis.net/189676-sekunden-formatieren.html)

API 8. Jul 2016 08:50

Datenbank: MS SQL Server • Version: 2008 • Zugriff über: SSMS

Sekunden formatieren
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

wie formatiere ich am besten Sekunden als [mm]:ss, so dass der Output wie auf dem Screenshot erscheint?
habe eine 'Funktion' zusammengestrickt, welche zwar das gewünschte Ergebnis liefert aber für meinen Geschmack etwas zu lange und unübersichtlich ist.

Code:
SELECT [Dauer] = CASE
      WHEN LEN(CAST([Dauer] AS INT) / 60) = 1
         THEN CAST(REPLACE(STR(CAST([Dauer] AS INT) / 60, 2), ' ', '0') AS CHAR(2)) + ':' + CAST(REPLACE(STR(CAST([Dauer] AS INT) % 60, 2), ' ', '0') AS CHAR(2))
      ELSE CAST(CAST([Dauer] AS INT) / 60 AS VARCHAR) + ':' + CAST(REPLACE(STR(CAST([Dauer] AS INT) % 60, 2), ' ', '0') AS CHAR(2))
      END
FROM tblX
PS: [DURATION] is vom Typ float.

Uwe Raabe 8. Jul 2016 09:12

AW: Sekunden formatieren
 
Vielleicht so?

SQL-Code:
CONCAT(FORMAT([Dauer]/60, '#00'), ':', Format(CAST([Dauer] as INT) % 60, '00'))

API 8. Jul 2016 09:31

AW: Sekunden formatieren
 
Danke. Leider kann ich Format nicht verwenden. Ist leider erst ab SQL Server 2012 verfügbar :(

Zitat:

'FORMAT' wird nicht als Name einer integrierten Funktion erkannt.

API 8. Jul 2016 10:26

AW: Sekunden formatieren
 
Habe noch eine einfachere Möglichkeit gefunden, doch das funktioniert nur bis @Dauer 5999, das wird als 99:59 ausgegeben.
Bei @id INT = 6000 wird es als 0*:00 angezeigt.

Zitat:

DECLARE @Dauer INT = 5999
SELECT RIGHT('0' + CONVERT(varchar(2), (@Dauer / 60)), 2) + ':' + RIGHT('0' + CONVERT(varchar(2), @Dauer % 60), 2)

API 8. Jul 2016 10:35

AW: Sekunden formatieren
 
ich denke, so passt es:

Code:
SELECT RIGHT('0' + CONVERT(varchar(5), (@id / 60)), LEN(@id/60)) + ':' + RIGHT('0' + CONVERT(varchar(2), @id % 60), 2)

himitsu 9. Jul 2016 02:50

AW: Sekunden formatieren
 
Eine "Format"-Funktion wird es garantiert geben, aber eventuell heißt sie etwas anders, aber das sollte ja ein Blick in die Dokumentation klären. :stupid:

Uwe Raabe 9. Jul 2016 08:40

AW: Sekunden formatieren
 
Zitat:

Zitat von himitsu (Beitrag 1342291)
Eine "Format"-Funktion wird es garantiert geben, aber eventuell heißt sie etwas anders, aber das sollte ja ein Blick in die Dokumentation klären. :stupid:

Es ist tatsächlich so, daß die FORMAT-Funktion erst in SQL Server 2012 Einzug fand. Eine frühere Funktion dieser Art ist mir auch nicht bekannt. Ich hatte bei meiner Antwort schlichtweg die Angabe von SQL Server 2008 übersehen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:49 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz