0

1 つの列に varchar (50) として「14:04:33」のような hr:min:sec 値を持つデータベースがあります。それぞれ 14:05:00 と 14:00:00 の最も近い 5 分に切り上げ/切り下げしたいのですが、どちらも varchar(50) である必要があります。それらをdatetimeに変換して切り上げようとしましたが、最も近い5分に切り下げるために使用したコードは次のとおりです。

DECLARE @Time varchar (50)
SELECT @Time ='14:04:33'
SELECT CAST(CONVERT(datetime,(FLOOR(CAST(CONVERT(datetime,@Time,108)As float )*288)/288), 108)AS varchar (50))

ただし、最終的な出力は 1900 年 1 月 1 日午後 2 時です。

最も近い5分に切り上げるために使用したコードは次のとおりです。

DECLARE @Time varchar (50)
SELECT @Time ='14:04:33'
SELECT CAST(CONVERT(datetime,(CEILING(CAST(CONVERT(datetime,@Time,108)As float)*288)/288), 108) AS varchar(50))

最終的な出力は、1900 年 1 月 1 日午後 2 時 5 分です。SQL Server 2012での変換に適した関数を探しています。

4

2 に答える 2

2

これを試して:

下限値 --

DECLARE @Time varchar (50)
SELECT @Time ='14:04:33'
SELECT CONVERT(time,CONVERT(varchar(2),DATEPART(HH,@Time))+':'+CONVERT(varchar(2),(DATEPART(MI,@Time)-DATEPART(MI,@Time)%5))+':00')

天井値 --

DECLARE @Time varchar (50)
SELECT @Time ='14:04:33'
SELECT DATEADD(MI,5,CONVERT(time,CONVERT(varchar(2),DATEPART(HH,@Time))+':'+CONVERT(varchar(2),(DATEPART(MI,@Time)-DATEPART(MI,@Time)%5))+':00'))
于 2013-05-24T07:03:10.380 に答える