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
так по существу вы хотите, чтобы сделать вашу работу за вас? Во-первых, вы должны решить, как работает ваша «хранимая процедура». Тогда вы должны изменить его соответственно, –
не понимаете, как вы «делаете» какую-либо работу для меня, я сам написал этот код, и он отлично работает: он округляет минутку до ближайшей 10-минутной штрафы, я пытался оттуда он до ближайшей 15 минут и не мог найти ничего полезного, так что искал указателей ... –
для других, заинтересованных в предоставлении полезных предложений здесь, это то, что я ищу: select round (46, -1) = 50 выберите round (46,?) = 45 его эта строка мне нужно изменить, но с чем: cast (round (DATEPART (Mi, [add when]), - 1) ---> заменить -1 тем, что ? –