Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

SQL Server - изчисляване на изминалото време между две маркировки за дата и час във формат HH:MM:SS

АКТУАЛИЗИРАНО:

Правилно изчисляване на период от време в SQL Server, дори ако е повече от 24 часа :

-- Setup test data
declare @minDate datetime = '2012-12-12 20:16:47.160'
declare @maxDate datetime = '2012-12-13 15:10:12.050'

-- Get timespan in hh:mi:ss
select cast(
        (cast(cast(@maxDate as float) - cast(@minDate as float) as int) * 24) /* hours over 24 */
        + datepart(hh, @maxDate - @minDate) /* hours */
        as varchar(10))
    + ':' + right('0' + cast(datepart(mi, @maxDate - @minDate) as varchar(2)), 2) /* minutes */
    + ':' + right('0' + cast(datepart(ss, @maxDate - @minDate) as varchar(2)), 2) /* seconds */

-- Returns 18:53:24

Крайните случаи, които показват неточност, са особено добре дошли!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Преобразуване на ‘time’ в ‘datetimeoffset’ в SQL Server (T-SQL примери)

  2. Как да използвам псевдоним в клаузата where?

  3. Динамично маскиране на данни в SQL Server за начинаещи

  4. Как да извлечете стойности от колона и да актуализирате резултата в друга колона

  5. Първичният ключ на SQL може ли да приеме '0'?