Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用SQL server设置时间间隔_C#_Asp.net_Sql_Sql Server - Fatal编程技术网

C# 如何使用SQL server设置时间间隔

C# 如何使用SQL server设置时间间隔,c#,asp.net,sql,sql-server,C#,Asp.net,Sql,Sql Server,我想做一份报告,报告的时间间隔是分钟,我有开始时间和结束时间,我希望时间间隔在两次之间 比如说 开始时间:-8:00PM结束时间:-16:00PM 表结构可能是这样的 S.no ---------------------------Time Interval 1--------------------------------8:00 AM - 8:10 AM(ENTRY STARTS) 2--------------------------------8:10 AM- 8:20 AM 3-

我想做一份报告,报告的时间间隔是分钟,我有开始时间和结束时间,我希望时间间隔在两次之间

比如说

开始时间:-8:00PM结束时间:-16:00PM

表结构可能是这样的

S.no ---------------------------Time Interval

1--------------------------------8:00 AM - 8:10 AM(ENTRY STARTS)

2--------------------------------8:10 AM- 8:20 AM

3------------------------------- 8:20 AM - 8:30 AM


Nth-----------------------------3:50PM - 4:00 PM(LAST ENTRY FOR
 REPORT)
如何在SQL查询中使用它,并希望在Asp.NETGridView中使用它

比如说

重表结构

现在使用下面的数据,我正在尝试将键的数量放在workdatetime的开始时间和此workdatetime的最后一次之间/

逻辑与上一个相同,但无法在时间间隔之间放置键的数量。 我希望显示与上面相同的结构,只添加一列与时间间隔相关的键/

工作时间***中午

16:52:04**54

16:52:06**0

16:52:07**2

16:52:25**0

16:52:26**0

16:52:35**0

16:52:35**0

16:53:15**0

16:53:55**0

16:54:28**11

16:54:35**0

16:55:15**0

16:55:55**0

16:56:35**0

16:57:15**0

16:57:28**103

16:57:55**0

16:58:35**0

16:58:39**2

16:59:09**19

16:59:15**0

16:59:42**40

16:59:43**2

16:59:55**0

17:00:35**0

17:01:15**0

17:01:35**4

17:01:55**0

17:02:35**0

17:03:15**0

17:03:55**0

17:03:58**2

17:04:24**3

17:04:35**

17:05:15**0

17:05:40**0

17:05:46**14

17:05:47**0

17:05:50**2

17:06:30**0

17:06:37**1

17:07:10**0

17:07:50**0

17:08:12**1

17:08:30**0

17:09:10**0

17:09:27**42

17:09:50**0

看一看

以秒为单位返回差值/间隔。除以60得到分钟,再除以60得到小时

因为您只使用时间组件,所以可以将datepart设置为您喜欢的任何值

编辑:

既然我误读了这个问题,也许你想要这样的东西:

DateTime startAt = new DateTime(2000, 01, 01, 8, 0, 0);
DateTime endAt = new DateTime(2000, 01, 01, 16, 0, 0);

for (DateTime date = startAt; date < endAt; date = date.AddMinutes(10))
{
    // create something with this interval
    Console.WriteLine(string.Format("Interval start: {0}, Interval End: {1}", date.ToString("HH:mm"), date.AddMinutes(10).ToString("HH:mm")));
}
DateTime startAt=新的日期时间(2000,01,01,8,0,0);
DateTime endAt=新的日期时间(2000,01,01,16,0,0);
for(DateTime date=startAt;date
只需使用开始日期和结束日期,每隔10分钟循环一次。

declare@start time
declare @Start time
declare @end time
declare @request int

set @Start = '08:00:00'
set @end = '16:00:00'
set @request = 1

;with Dates as (
    select @request as reqId,@Start as reqDate
    union all
    select reqId+1,DATEADD(MINUTE,10,reqDate) from Dates
    where reqDate < @end
)
select reqId,convert(varchar(8),reqDate,100)+'-'+convert(varchar(8),DATEADD(MINUTE,10,reqDate),100) "Time Interval" from Dates
声明@end time 声明@request int 设置@Start='08:00:00' 设置@end='16:00:00' 设置@request=1 ;日期为( 选择@request as reqId、@Start as reqDate 联合所有 选择reqId+1,DATEADD(分钟,10,reqDate)from Dates 其中reqDate<@结束 ) 选择REQUID,convert(varchar(8),REQUDATE,100)+'-'+convert(varchar(8),DATEADD(分钟,10,REQUDATE),从日期开始的100“时间间隔”

将其用于ur报告

这里有一个使用CTE的解决方案

DECLARE @StartDate DATETIME, @EndTime DATETIME

SELECT @StartDate = '8:00 PM'
SELECT @EndTime = '9:00 PM'


;WITH time_cte(StartTime, EndTime) AS
(
   SELECT @StartDate StartTime, DATEADD(mi, 10, @StartDate) EndTime

   UNION ALL

   SELECT EndTime, DATEADD(mi, 10, EndTime)  FROM time_cte
   WHERE EndTime < @EndTime

)  
SELECT * FROM time_cte
声明@StartDate DATETIME,@EndTime DATETIME
选择@StartDate='8:00pm'
选择@EndTime='9:00pm'
;时间(开始时间、结束时间)为
(
选择@StartDate StartTime,DATEADD(mi,10,@StartDate)EndTime
联合所有
从时间选择EndTime,DATEADD(mi,10,EndTime)
其中EndTime<@EndTime
)  
选择*从时间\u cte

检查它在

上的工作情况,到目前为止您做了什么,您有什么问题?可能重复我希望数据如下所示。当我只输入开始时间和结束时间时,会动态地创建间隔,正如我在上面显示的那样,重复链接会根据小时进行拆分,因此您可以只修改代码,将其拆分为10分钟的间隔。我知道了,我可以准确地同时调整这两个时间,就像我在上面显示的那样(上午8:00-上午8:10)嗯,但最重要的是,这篇文章是用C语言写的,而不是用SQL语言写的,它将显示两个日期之间的差异,而不是像本文中所要求的那样,将其分成10分钟的行间隔question@user3345235请参阅我的最新答案。它是C#,但可能会解决您的问题。
DECLARE @StartDate DATETIME, @EndTime DATETIME

SELECT @StartDate = '8:00 PM'
SELECT @EndTime = '9:00 PM'


;WITH time_cte(StartTime, EndTime) AS
(
   SELECT @StartDate StartTime, DATEADD(mi, 10, @StartDate) EndTime

   UNION ALL

   SELECT EndTime, DATEADD(mi, 10, EndTime)  FROM time_cte
   WHERE EndTime < @EndTime

)  
SELECT * FROM time_cte