您将在 Sql Server 中使用 WHILE 循环或在 Sql Server 2005+ 中使用递归 CTE
CTE
DECLARE @StartTime DATETIME,
@EndTime DATETIME,
@Inc INT
SELECT @StartTime = '10:00',
@EndTime = '17:30',
@Inc = 1
;WITH Vals AS (
SELECT @StartTime RunTime
UNION ALL
SELECT DATEADD(mi,@Inc,RunTime)
FROM Vals
WHERE DATEADD(mi,@Inc,RunTime) <= @EndTime
)
SELECT *
FROm Vals
OPTION (MAXRECURSION 0)
对于 C#,我会实现一些简单的东西,例如
C#
DateTime startTime = DateTime.Today.AddHours(10);
DateTime endTime = DateTime.Today.AddHours(17).AddMinutes(30);
int inc = 1;
List<DateTime> timeList = new List<DateTime>();
while (startTime < endTime)
{
timeList.Add(startTime);
startTime = startTime.AddMinutes(inc);
}
timeList.Add(endTime);
甚至
DateTime startTime = DateTime.Today.AddHours(10);
DateTime endTime = DateTime.Today.AddHours(17).AddMinutes(30);
List<DateTime> timeEnumList = new List<DateTime>();
Enumerable.Range(0, (int)(endTime.Subtract(startTime).TotalMinutes / inc) + 1).ToList().ForEach(i => timeEnumList.Add(startTime.AddMinutes(i)));