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