Время инкремента с 1-минутным и 5-минутным интервалами с использованием c # - если возможно, с сервером SQL - PullRequest
1 голос
/ 11 ноября 2010

У меня есть требование, в котором у меня есть время начала и окончания.Например, давайте предположим, что время начала 10:00, а время окончания 17:30.Мне нужно увеличить это с интервалами в 1 минуту и ​​5 минут.

Например, если я нажимаю кнопку с именем «Увеличение на 5 минут», серия должна выглядеть следующим образом:

10: 00 10:0510: 10

...

17: 30

если я нажму на кнопку "incrment 1 min", то серия должна быть

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

17: 30.

Было бы очень полезно, если бы кто-нибудь мог объяснить мне с помощью кода, как реализовать это с помощью c #, а такжеКак написать хранимую процедуру для реализации того же (SQL Server)

Ответы [ 3 ]

2 голосов
/ 11 ноября 2010

Вы бы использовали либо WHILE цикл в Sql Server, либо рекурсивный CTE в Sql Server 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 голосов
/ 11 ноября 2010

У меня есть функция SQLE CTE, которая генерирует интервалы времени между начальной и конечной датой, которую вы можете использовать ... это объясняется здесь .

0 голосов
/ 11 ноября 2010

В C # это класс TimeSpan.Вы можете использовать его в арифметике с "+" или "-" против объектов DateTime.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...