2010-11-11 42 views
1

我有一個需求,我有一個開始和結束時間。例如,讓我們假設 開始時間爲10:00,結束時間爲17:30。我需要在1分鐘和5分鐘的時間間隔內增加它。用1分鐘和5分鐘的時間間隔使用c#增加時間 - 如果可能的話用sql server

例如,如果我點擊名爲 「遞增5分鐘」 系列應該是這樣的

10:00 10:05 10:10

按鈕,...

17:30

,如果我按一下按鈕 「incrment 1分鐘」,那麼該系列應該是

10:00 10:01 10:02 .....

17:30。

這將是非常感激,如果有人可以用代碼如何實現這種使用C#以及如何編寫一個存儲過程來實現相同的(SQL Server)的

回答

2

你會使用一個WHILE循環給我解釋一下在SQL Server或遞歸CTE在SQL服務器2005+

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))); 
0

在C#其時間跨度類。對於DateTime對象,您可以在算術中使用「+」或「 - 」。

0

我有一個SQL Server CTE函數,可以在開始和結束日期時間值之間生成時間間隔,您可以使用它...它是explained here