2013-09-06 3 views
-1

Итак, у меня есть только CreateDate для работы.DateTime - Определить юбилей (ежемесячный юбилей)

У меня есть запланированная задача, которая выполняется каждый день в 12 часов ночи, и для этого нужно получить все записи, которые выпадают в тот же день месяца (но не в случае, если CreateDate == DateTime.Now).

Я бы предпочел, чтобы это было в LINQ, поскольку это вызов базы данных, но я думаю, что любой логики итерации будет достаточным.

У меня есть это прямо сейчас, но это имеет проблемы с дней выше, чем 28:

var results = Context.Subscriptions.Where(
       x => !(x.StartDate.Day == DateTime.Now.Day && 
         x.StartDate.Month == DateTime.Now.Month && 
         x.StartDate.Year == DateTime.Now.Year) && 
        x.StartDate.Day == DateTime.Now.Day); 

Обновление вопрос для ясности:

Например, созданная дата записи, то есть 31 января 2013 г. Эта запись следует вытаскивать каждый месяц. Но так как не все месяцы имеют 31 день, мой код выше не будет работать в те месяцы. Мне все равно нужно снимать запись каждый месяц, даже если в этом месяце нет 31-го.

+0

Как далеко вы дошли? Приложите все усилия и, как вы думаете, лучший способ решить проблему. – dcaswell

+1

Итак, записи на 31-м вытаскиваются только за 7 из 12 месяцев? Когда их нужно потянуть? –

+0

Добавлено, что у меня есть сейчас. Пока, если начальный день выпадет в 29, 30 или 31, они не будут тянуться каждый месяц. Думаю, их на следующий день вытащить? Так, например, если дата создания записи приходится на 31-й, а текущий месяц имеет только 30 дней, запись должна быть вытащена в следующем месяце на 1-й. Если это не лучшее решение, я очень открыт для других ответов. – vsebastian

ответ

0

Просто мысль, может быть, вы можете использовать службу Windows при выполнении запланированной задачи, но есть еще один способ планировщика задач в .net. Если вы собираетесь использовать использование служб Windows, вы можете использовать класс таймера для повторных прогонов. И если у вас есть таблица задач, у вас могут быть столбцы для интервалов времени, времени, времени и времени. здесь вы можете проверить интервал времени, в течение которого он будет запущен, и проверить, чтобы дата и время выполнялось задание/задача или оно не должно выполняться.

проверить это для получения дополнительной информации: http://msdn.microsoft.com/en-us/magazine/cc163821.aspx

Я надеюсь, что это поможет вам.

+0

Я уже думал о чем-то подобном (интервал, время, время, время и время). Но эти данные извлекаются из внешней службы, и мы хотели бы избежать этого, если это возможно. Кроме того, мой начальник не хочет добавлять эти столбцы в нашу базу данных по причинам, которые я не знаю. – vsebastian

+0

Вы читали это? http://stackoverflow.com/questions/5335681/how-to-schedule-jobs-without-overlap-using-linq-to-objects –

Смежные вопросы