2010-03-08 3 views
0

У меня есть хранимая процедура, которая округляет столбец с датами в (yyyy: mm: dd hh: mM: ss) до ближайшего 10-минутного дескриптора (yyyy: mm: dd hh: mM)T-SQL - округление и нормализация даты

20100303 09: 46: 3000 ------> 20100303 09:50

, но я хочу, чтобы Ставить его округлить до ближайшего 15 минут ручки:

20100303 09: 46: 3000 ------> 20100303 09:45

вот мой код:

IF OBJECT_ID(N'[dbo].[SPNormalizeAddWhen]') IS NOT NULL 
     DROP PROCEDURE [dbo].[SPNormalizeAddWhen] 

GO 

CREATE PROCEDURE [dbo].[SPNormalizeAddWhen] 
As 
declare @colname nvarchar(20) 
set @colname='Normalized Add_When' 

if not exists (select * from syscolumns where id=object_id('Risk') and [email protected]) 
    exec('alter table Risk add [' + @colname + '] datetime') 


declare @sql nvarchar(500) 
set @sql='update Risk set [' + @colname + ']=cast(DATEPART(yyyy,[add when]) as nvarchar(4)) + ''-'' + cast(DATEPART(mm,[add when]) as nvarchar(2)) + ''-'' + cast(DATEPART(dd,[add when]) as nvarchar(2)) + '' '' + cast(DATEPART(Hh,[add when]) as nvarchar(2)) + '':'' + cast(round(DATEPART(Mi,[add when]),-1) as nvarchar(2)) ' 
print @sql 
exec(@sql) 
GO 
+0

так по существу вы хотите, чтобы сделать вашу работу за вас? Во-первых, вы должны решить, как работает ваша «хранимая процедура». Тогда вы должны изменить его соответственно, –

+0

не понимаете, как вы «делаете» какую-либо работу для меня, я сам написал этот код, и он отлично работает: он округляет минутку до ближайшей 10-минутной штрафы, я пытался оттуда он до ближайшей 15 минут и не мог найти ничего полезного, так что искал указателей ... –

+0

для других, заинтересованных в предоставлении полезных предложений здесь, это то, что я ищу: select round (46, -1) = 50 выберите round (46,?) = 45 его эта строка мне нужно изменить, но с чем: cast (round (DATEPART (Mi, [add when]), - 1) ---> заменить -1 тем, что ? –

ответ

3

Чтобы округлить время до ближайших 15 минут ...

Select GetDate(), 
     DateAdd(Minute, 15 * Round(DateDiff(minute, 0, GetDate())/15.0, 0), 0) 
Смежные вопросы