sql >> Databáze >  >> RDS >> Sqlserver

Vypočítejte součet datumu a času v HH:MM:SS v sql

Myslím, že jste chtěli převést na čas (nebo datum a čas, pokud to vaše verze SQL Server nepodporuje), spíše než varchar.

Ale to je velmi špatný způsob, jak to udělat. 25:01:01 nebude platné datum a čas. Měli byste sečíst sekundy (jak je navrženo v jiné odpovědi) a poté na konci naformátovat výsledky, jak chcete.

Do svého prvního dotazu tedy zahrňte další sloupec s dobou trvání v sekundách:

, DateDiff(s,[Start Date] , [End Date]) as [Ticket Type Seconds]

Pak ve druhém dotazu naformátujte SUM([Ticket Type Seconds]), třeba takto:

STR(SUM([Ticket Type Seconds])/3600) 
+ RIGHT(CONVERT(char(8),DATEADD(s,SUM([Ticket Type Seconds]),0),108),6)

To vám dává hodiny (které mohou být více než 24), zřetězené s částí ':MM:SS' datatime, kterou získáte, když převedete sekundy (přidané k 0 datu:19000101 00:00:00) na datum a čas.



  1. Mnoho k mnoha vztahům v MySQL

  2. jak naplnit databázi pomocí procedur

  3. OFFSET vs. ROW_NUMBER()

  4. Jak změním SQL Server 2005 tak, aby rozlišoval malá a velká písmena?