Последняя четверть часа - PullRequest
       1

Последняя четверть часа

0 голосов
/ 25 февраля 2019

Я нашел следующее

Select dateadd(minute, datediff(minute,0,GETDATE()) / 15 * 15, 0)

, которое отлично подходит для округления до последней четверти часа.Но я бы хотел всегда получать последнюю четверть последнего часа.

например,

Если время 12:35, я хочу увидеть 11:45, так как это последняя четверть часа.

Ответы [ 3 ]

0 голосов
/ 25 февраля 2019

Это немного затянуто, просто то, как работает мой разум (Гордан гораздо более лаконичен, чем мой):

DECLARE @time time = '12:35'

SELECT CONVERT(time,DATEADD(MINUTE,45,DATEADD(HOUR, DATEDIFF(HOUR,'00:00',DATEADD(MINUTE, -45, @time)),'00:00')));
0 голосов
/ 25 февраля 2019

Предполагая, что я понимаю вопрос, вы хотите, чтобы текущий час текущей минуты находился в диапазоне от 45 до 59, или предыдущий час, если текущая минута находится в диапазоне от 0 до 44 - так вот мое предлагаемое решение:

DECLARE @ActualTime DateTime = GetDate()

SELECT @ActualTime As ActualTime, DATETIMEFROMPARTS(YEAR(Now), MONTH(Now), DAY(Now), DATEPART(HOUR, Now), 45, 0, 0) As LastQuarterOfHour
FROM 
(
    SELECT IIF(DATEPART(MINUTE,@ActualTime) < 45, DATEADD(HOUR, -1, @ActualTime), @ActualTime) As Now
) AS x
0 голосов
/ 25 февраля 2019

Вы можете использовать datetimefromparts():

select datetimefromparts(year(dt), month(dt), day(dt), datepart(hour, dt), 45, 0, 0)
from (values (dateadd(hour, -1, getdate()))) v(dt);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...