【发布时间】:2012-10-12 00:34:57
【问题描述】:
我需要 1 天的字符串值
“23:59:59”正在运行,但会导致延迟
“24:00:00”不起作用:将数据类型 varchar 转换为 datetime 时出错。
“1.00:00:00”不起作用:将数据类型 varchar 转换为 datetime 时出错。
这是我的代码:
PROCEDURE [dbo].[Procedure1]
@Start datetime,
@Finish datetime,
@TimeRange datetime
AS
BEGIN
SET NOCOUNT ON;
declare @TimeRanges as TABLE (SessionStart datetime, SessionEnd datetime);
with TimeRanges as (
select @Start as StartTime, @Start + @TimeRange as EndTime
union all
select StartTime + @TimeRange, EndTime + @TimeRange
from TimeRanges
where EndTime < @Finish )
select StartTime, EndTime, Count( Test.ScenarioID ) as TotalPeaks
from TimeRanges as TR left outer join
dbo.Test as Test on TR.StartTime <= Test.SessionStartTime and Test.SessionCloseTime < TR.EndTime
group by TR.StartTime, TR.EndTime
END
【问题讨论】:
-
为什么不使用 DATEADD 添加时间范围?
-
我将时间范围拆分为特定时间,例如当@TimeRange = 00:05:00.000 然后代码将它们拆分为 5 分钟,它工作正常,但是当我想要一份每日报告时,我需要使用"24:00:00.000" 或类似 "1.00:00:00.000" 的意思是 1 天
标签: c# .net sql-server datetime time