Как к раунду время в T-SQL

Пока вы работаете с несортированным контейнером (std::vector - один), я бы попросил std::any_of выразить ваше намерение. Он будет иметь такую ​​же эффективность, как std::find

#include <vector>
#include <algorithm>

int main()
{
    std::vector<char> a{'a', 'b', 'c', 'd', 'e', 'f'};
    // Checks range between 'b'...'d'
    if (std::any_of(a.begin() + 1, a.end() - 2, [](char c){return c == 'b';})) {
      // do stuff
    }
    return 0;
}
18
задан Vitor Silva 30 October 2008 в 10:53
поделиться

2 ответа

Попробуйте эту функцию

CREATE FUNCTION [dbo].[RoundTime] (@Time datetime, @RoundTo float)
RETURNS datetime
AS
BEGIN
   DECLARE @RoundedTime smalldatetime
   DECLARE @Multiplier float

   SET @Multiplier= 24.0/@RoundTo

   SET @RoundedTime= ROUND(CAST(CAST(CONVERT(varchar,@Time,121) AS datetime) AS float) * @Multiplier,0)/@Multiplier

   RETURN @RoundedTime
END



select dbo.roundtime('13:15',0.5)

, 1-й параметрический усилитель является временем, которое будет округлено, и 2-й будет основа в Вашем списке (0.5 получаса, 1 один час...)

29
ответ дан 30 November 2019 в 07:39
поделиться

Очень хорошо, спасибо. Я использовал его в линии для округления до 15 минут

convert(smalldatetime,ROUND(cast(TDatalog.Time as float) * (24/.25),0)/(24/.25)) AS RoundedTime
5
ответ дан 30 November 2019 в 07:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: