2016-12-21 2 views
0

У меня есть 2 таблицы с датами. Сначала 11.12.2016 12:00:00:000 и 11.12.2016 12:45:06:000.SQL Server: функция вычисления суммы между датами со временем

Я знаю, что время между этими датами составляет 45 минут 06 секунд.

Как рассчитать и написать заявление WHERE на номер SELECT все записи, где время будет более 45 минут?

+1

Редактировать ваш вопрос и предоставить образец данных в виде таблицы в вопросе. Также пометьте базу данных, которую вы используете. –

ответ

0

DATEDIFF(second,... будет с точностью до 1 секунды.
С DATEDIFF(minute,... ошибка будет до 1 минуты в каждом направлении.

SELECT * 
FROM mytable 
WHERE DATEDIFF(second,date_col_1,date_col_2) > 45*60 

Вот почему вы не хотите использовать DateDiff с minute найти разницу дат в минутах

declare @date1 datetime = '2016-12-01 00:00:00' 
     ,@date2 datetime = '2016-12-01 00:01:59.99' 

select datediff(minute,@date1,@date2) as datediff_minute 
     ,datediff(second,@date1,@date2) as datediff_second 

+-----------------+-----------------+ 
| datediff_minute | datediff_second | 
+-----------------+-----------------+ 
| 1    | 119    | 
+-----------------+-----------------+ 

declare @date1 datetime = '2016-12-01 00:00:59.99' 
     ,@date2 datetime = '2016-12-01 00:01:00' 

select datediff(minute,@date1,@date2) as datediff_minute 
     ,datediff(second,@date1,@date2) as datediff_second 

+-----------------+-----------------+ 
| datediff_minute | datediff_second | 
+-----------------+-----------------+ 
| 1    | 1    | 
+-----------------+-----------------+ 
+0

Спасибо Дуду Марковиц. Ваша помощь была благодарна. Я ценю это. – Raven

0

Вы можете сделать это, используя функцию DATEDIFF.

SELECT * FROM Table 
WHERE DATEDIFF(minute,Column1,Column2) > 45 

Вы можете узнать больше об этом here.

(Не забудьте заменить TableColumn1 и Column2 с соответствующими названиями.)

+0

Спасибо пользователю3378165. Ваша помощь была благодарна. Я ценю это. – Raven

-1
select convert(varchar(50),datediff(MINUTE, '11-12-2016 12:00:00:000', '11-12-2016 12:45:06:000')) +' Minutes ' , convert(varchar(50),datediff(ss, '11-12-2016 12:00:00:000', '11-12-2016 12:45:06:000') % 60)+ ' Seconds' 
+2

Добро пожаловать в переполнение стека. Лучше не просто отправлять код здесь. Его предпочитают, чтобы вы это объяснили. Также вы должны отформатировать его, используя формат CODE. – logixologist

0

Вы можете попробовать создать функцию, как это:

create function dbo.fn_diffdates (@date1 datetime, @date2 datetime) 
returns bit 
as begin 
    declare @retValue bit = 0; 
    SET @retValue = iif(datediff(minute, @date2, @date2) > 45, 1, 0) 

    return @retValue 
end 

и запрос, как показано ниже

select * from yourtable where dbo.fn_diffdates(date1, date2) = 1 
+0

Спасибо, Каннан Кандасами. Ваша помощь была благодарна. Я ценю это. – Raven

Смежные вопросы