C# 如何使用SQL server设置时间间隔
我想做一份报告,报告的时间间隔是分钟,我有开始时间和结束时间,我希望时间间隔在两次之间 比如说 开始时间:-8:00PM结束时间:-16:00PM 表结构可能是这样的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-
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