я хочу, чтобы вычислить разницу во времени между двумя временами, но моя проблема, может быть, второй раз будет после полуночи, и первый перед ним нравится:SQL DATEDIFF из утра вечера
time 1 = '2015-08-02 09:30 PM'
time 2 = '2015-08-03 02:30 AM'
так что в этом случае разница между ними будет отрицательным, я пытаюсь умножить значение, возвращенное -1, чтобы преобразовать его в положительное значение, но и другие данные будут неправильно ..
мой код:
DECLARE @StartDate datetime = '2015-08-02';
DECLARE @EndDate datetime = '2015-08-02';
DECLARE @EmpID nvarchar(6) = '12345';
SELECT
SUM(CASE WHEN(DATEDIFF(minute, a.[Time], @StartDate)) < 0
then DATEDIFF(minute, a.[Time], @StartDate) * -1
ELSE DATEDIFF(minute, a.[Time], @StartDate) END
)
FROM
Attendance a
WHERE
(EmpID = @EmpID OR @EmpID IS NULL)
AND a.[date] <= @EndDate
GROUP BY EmpID
так как я могу это решить?
Не должен ли 'END' быть после' ELSE' в вашем 'CASE' заявлении? Это опечатка или ваш код такой? – Raj
yes Raj, я исправил его. –
Возможно, попробуйте преобразовать данные в формат 24 с помощью 'Convert (datetime, '2015-08-02 09:30 PM')' например. –