【发布时间】:2013-09-06 02:22:11
【问题描述】:
所以我只有一个 CreatedDate 可以使用。
我有一个每天午夜 12 点运行的计划任务,它需要获取该月同一天的所有记录(但如果 CreatedDate == 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);
为了清楚起见更新问题:
例如,一条记录的创建日期是 2013 年 1 月 31 日。这条记录应该每个月都被拉取。但由于并非所有月份都有 31 天,所以我上面的代码在这些月份不起作用。即使那个月没有31号,我仍然需要每个月拉记录。
【问题讨论】:
-
到目前为止你已经走了多远?发表您的最大努力以及您认为解决问题的最佳方法。
-
那么 31 日的记录仅在 12 个月中的 7 个月内被提取?什么时候应该拉出来?
-
发布了我现在所拥有的。到目前为止,如果开始日落在 29、30 或 31 日,它们将不会每个月都被拉取。我猜他们应该在第二天被拉走?例如,如果记录的创建日期是 31 日,而当月只有 30 天,则记录应该在下个月的 1 日被拉出。如果这不是最佳解决方案,我非常愿意接受其他答案。
-
@Kablitz 为什么第一个要从第 30 个或第 31 个提取记录?它应该从一开始就拉记录,不是吗?或者您是否需要 1st 也生成上个月不存在的第 29-31 天的所有剩余报告?