0

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
4

1 に答える 1

1

datetimeこのタイプを、機能しないタイムスパンタイプとして使用しようとしています。

時間範囲パラメータを整数に変更することをお勧めします。次に、それが秒、分、時間、日などのいずれかであることを指定します。

あなたがそれを数日にすることに決めた場合:

PROCEDURE [dbo].[Procedure1] 

    @Start datetime, 
    @Finish datetime,
    @TimeRange int
AS
BEGIN

    SET NOCOUNT ON;

    declare @TimeRanges as TABLE (SessionStart datetime, SessionEnd datetime);

     with TimeRanges as (
  select @Start as StartTime, DATEADD(day, @TimeRange, @Start) as EndTime
  union all
  select DATEADD(day, @TimeRange, StartTime), DATEADD(day, @TimeRange, EndTime)
    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
于 2012-10-22T08:33:35.997 に答える