Пока вы работаете с несортированным контейнером (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;
}
Попробуйте эту функцию
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 один час...)
Очень хорошо, спасибо. Я использовал его в линии для округления до 15 минут
convert(smalldatetime,ROUND(cast(TDatalog.Time as float) * (24/.25),0)/(24/.25)) AS RoundedTime