У меня есть таблица со следующими столбцами

  log_id      INT PRIMARY KEY 
  emp_name    VARCHAR(7) NOT NULL
  date_log    VARCHAR(23) NOT NULL
  in_am       VARCHAR(8) NULL
  out_am      VARCHAR(4) NULL
  total_am    VARCHAR(4) NULL
  in_pm       VARCHAR(4) NULL
  out_pm      VARCHAR(8) NULL
  total_pm    VARCHAR(4) NULL
  grand_total VARCHAR(4) NULL
  id          INT  Foreign key here

Предположим, я уже получил значение in_am и out_am, и я хочу увидеть разницу между ними. Я сделал это.

 select cast(out_am as datetime) - cast(in_am as datetime) from Table

Результат такой:

1900-01-01 00:00:07.000

Но я хочу такой результат

00:00:07

Я пытаюсь сделать это так:

select substring((cast(out_am as datetime) - cast(in_am as datetime)),15,20) from table

Но это не работает.

0
Gerard Santos 7 Сен 2016 в 17:06

5 ответов

Лучший ответ

Просто используйте формат DATETIME 108 для вывода ЧЧ: ММ: СС следующим образом:

SELECT CONVERT(VARCHAR(8), (CAST(out_am AS DATETIME) - CAST(in_am AS DATETIME)), 108) FROM Table
1
Chris Pickford 7 Сен 2016 в 14:13

В качестве альтернативы вы можете преобразовать в строку и извлечь компонент времени:…

0
Kannan Kandasamy 7 Сен 2016 в 14:09

Если вы знаете, что значения всегда меньше суток, вы можете преобразовать разницу в time:

select cast(cast(out_am as datetime) - cast(in_am as datetime) as time)
from Table;

В качестве альтернативы вы можете преобразовать в строку и извлечь компонент времени:

select right(convert(varchar(255), cast(out_am as datetime) - cast(in_am as datetime) ), 8)
0
Gordon Linoff 7 Сен 2016 в 14:09

Вы можете использовать CAST и FORMAT:

SELECT FORMAT(CAST(CAST(out_am AS DATETIME) - CAST(in_am AS DATETIME) AS TIME), N'hh\:mm\:ss')
FROM TABLE
0
apomene 7 Сен 2016 в 14:16

Вы можете ПРИНЯТЬ или ПРЕОБРАЗОВАТЬ эти переменные к типу времени.
И добавьте разницу в секундах к 0 разу.

select 
LEFT(DATEADD(SECOND, DATEDIFF(SECOND, convert(time,in_am), convert(time,out_am)), convert(time,'0:0')),8)
from Table;

LEFT используется для получения от времени только переменной в формате HH: MM: SS.

0
LukStorms 7 Сен 2016 в 14:30