0
我有一個存儲過程,將(yyyy:mm:dd hh:mM:ss)中的日期四捨五入到最近的10分鐘句柄(yyyy:mm:dd hh:mM )T-SQL - 日期舍入和規範化
20100303 09:46:3000 ------> 20100303 9時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
所以基本上你要我們做工作的嗎?首先,你應該研究'你的'存儲過程是如何工作的。那麼你應該相應地改變它, – 2010-03-08 00:48:05
不知道你是如何「爲我做」任何工作,我自己寫了這個代碼,它工作得很好:它把分鐘湊到最近的10分鐘的罰款,我試着ot它到最近的15分鐘,找不到任何有用的東西,所以一直在尋找指針... – 2010-03-08 01:31:31
其他感興趣的人實際上給這裏有用的建議是我正在尋找: 選擇一輪(46,-1)= 50 選擇一輪(46,?)= 45 它的這一行我需要改變,但用什麼: cast(round(DATEPART(Mi,[add when]), - 1)---> ? – 2010-03-08 01:34:29