Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как показать Разницу дат в часах с минутами  [new]
revda.info
Member

Откуда:
Сообщений: 570
Вот запрос:
SELECT *,[b]DATEDIFF(hour,dateLoseOn,dateLoseOff) as timeOff[/b],ROUND(DATEDIFF(hour,dateLoseOn,dateLoseOff)*d/1000*d/1000*3.14/4*1.2*24*3600/24,0) AS v 
FROM za WHERE (MONTH(dateOn) = MONTH(GETDATE()))
ORDER BY dateOn

Выделенный кусок:
DATEDIFF(hour,dateLoseOn,dateLoseOff) as timeOff
показывает только часы (например 20), а хотелось бы видеть нечто 20,03
т.е. 20 часов и 3 минуты.
Конечно лучше показать так: 20ч. 3м., но поле там int, и к тому же это поле учавствует потом в расчетах, поэтому надо генерить другое поле наверное.
Например timeOffStr, куда я буду считать так:
DATEDIFF(hour,dateLoseOn,dateLoseOff)+'ч. '+DATEDIFF(min,dateLoseOn,dateLoseOff)-DATEDIFF(hour,dateLoseOn,dateLoseOff)*24+'м.'

В чем я не прав ? Может это можно сделать прощще ?
Спасибо
4 фев 10, 09:33    [8292669]     Ответить | Цитировать Сообщить модератору
 Re: Как показать Разницу дат в часах с минутами  [new]
iljy
Member

Откуда:
Сообщений: 8711
revda.info,

можно. вычислите разницу d в минутах, потом d/60 - это часы, d%60 - минуты.
4 фев 10, 09:49    [8292760]     Ответить | Цитировать Сообщить модератору
 Re: Как показать Разницу дат в часах с минутами  [new]
Anatoly Podgoretsky
Member

Откуда:
Сообщений: 62926
Три сотых часа, это не три минуты

--
http://www.podgoretsky.com
4 фев 10, 09:49    [8292761]     Ответить | Цитировать Сообщить модератору
 Re: Как показать Разницу дат в часах с минутами  [new]
baracs
Member

Откуда: Москва
Сообщений: 7195
revda.info
Конечно лучше показать так: 20ч. 3м., но поле там int, и к тому же это поле учавствует потом в расчетах
Так, если поле int-овое, в нем должно быть что-то одно: либо минуты, либо часы...

А чем вам эта строка
revda.info
поэтому надо генерить другое поле наверное. Например timeOffStr, куда я буду считать так:
DATEDIFF(hour,dateLoseOn,dateLoseOff)+'ч. '+DATEDIFF(min,dateLoseOn,dateLoseOff)-DATEDIFF(hour,dateLoseOn,dateLoseOff)*24+'м.'
поможет, совсем не понятно.
4 фев 10, 09:58    [8292822]     Ответить | Цитировать Сообщить модератору
 Re: Как показать Разницу дат в часах с минутами  [new]
Mikle83
Member

Откуда: Санкт-Петербург
Сообщений: 629
Declare @D1 DateTime Set @D1 = '20100204 12:00:00'
Declare @D2 DateTime Set @D2 = '20100204 13:56:00'
Select 
	DateDiff(hour, @D1,@D2),
	DateDiff(minute, DateAdd(hour, DateDiff(hour, @D1,@D2),@D1), @D2)

Как склеить два значения думаю догадаетесь )
4 фев 10, 10:24    [8292986]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Как показать Разницу дат в часах с минутами  [new]
kac_!
Guest
Declare @D1 DateTime Set @D1 = '20170303 16:35'
Declare @D2 DateTime Set @D2 = '20170305 17:51'

Select
case when
(DateDiff(minute, DateAdd(hour, DateDiff(hour, @D1,@D2),@D1), @D2) < 0) then cast(DateDiff(hour, @D1,@D2)-1 as varchar) + ':'+ cast((60 + DateDiff(minute, DateAdd(hour, DateDiff(hour, @D1,@D2),@D1), @D2)) as varchar)
else
cast(DateDiff(hour, @D1,@D2) as varchar) + ':' + cast(DateDiff(minute, DateAdd(hour, DateDiff(hour, @D1,@D2),@D1), @D2) as varchar)
end
29 янв 18, 11:30    [21146597]     Ответить | Цитировать Сообщить модератору
 Re: Как показать Разницу дат в часах с минутами  [new]
Добрый Э - Эх
Guest
kac_!,

8 лет человек ждал твоего ответа! Вот теперь-то у него точно всё получится! :)
29 янв 18, 11:50    [21146668]     Ответить | Цитировать Сообщить модератору
 Re: Как показать Разницу дат в часах с минутами  [new]
RMAN54
Member

Откуда:
Сообщений: 185
Вот ретрофилы)

сразу запостю вариант чтоб через 8 лет не писать


Declare @D1 DateTime Set @D1 = '20170303 17:50'
Declare @D2 DateTime Set @D2 = '20170305 17:50'

select  cast(  x.mm /60 as varchar(30)) + ':' +  right('0'+cast(x.mm % 60 as varchar(10)),2)
from (
 select datediff(mi,@d1,@d2) mm
 ) x 
29 янв 18, 12:14    [21146750]     Ответить | Цитировать Сообщить модератору
 Re: Как показать Разницу дат в часах с минутами  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
RMAN54,

ну или

FORMAT(FLOOR(x.mm/60.)*100 + x.mm % 60,'00:00')
29 янв 18, 12:27    [21146813]     Ответить | Цитировать Сообщить модератору
 Re: Как показать Разницу дат в часах с минутами  [new]
RMAN54
Member

Откуда:
Сообщений: 185
TaPaK
RMAN54,

ну или

FORMAT(FLOOR(x.mm/60.)*100 + x.mm % 60,'00:00')

норм), но тогда почему бы не так
FORMAT(x.mm/60*100 + x.mm % 60,'00:00')
29 янв 18, 12:57    [21146902]     Ответить | Цитировать Сообщить модератору
 Re: Как показать Разницу дат в часах с минутами  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
RMAN54,

на любителя, я так не делаю
29 янв 18, 13:05    [21146927]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить