在此方法中,我需要按 RenewalDate 选择所有记录。为了实现这一目标,我有类似的方法。
public class Subscription
{
public DateTimeOffset? StartDate { get; set; }
public DateTimeOffset? RenewalDate { get; set; }
public string SubscriptionType { get; set; }
}
public async ValueTask<List<Subscription>> SelectAllSubscriptionRenewingOnNextDay()
{
DateTimeOffset tomorrow = DateTime.Today.AddDays(1);
var subscriptionsRenewalTomorrow =
await this.CustomerSubscriptions.Include(c => c.Customer)
.Where(sub => sub.RenewalDate != null && sub.RenewalDate >= tomorrow.UtcDateTime && sub.RenewalDate < tomorrow.UtcDateTime.AddDays(1))
.ToListAsync();
return subscriptionsRenewalTomorrow;
}
数据库中有一条记录,其 RenewalDate 的值为
2025-02-20 05:30:00+05:30
。但该记录未检索。明天如何更新所有记录?
+05:30 显示您正在将数据库中的日期时间保存为本地时间,因此请在调整时尝试使用本地日期时间而不是 UTC 日期。
public async ValueTask<List<Subscription>> SelectAllSubscriptionRenewingOnNextDay()
{
DateTimeOffset tomorrow = DateTimeOffset.UtcNow.AddDays(1).ToLocalTime();
var subscriptionsRenewalTomorrow =
await this.CustomerSubscriptions.Include(c => c.Customer)
.Where(sub => sub.RenewalDate.HasValue &&
sub.RenewalDate >= tomorrow.Date &&
sub.RenewalDate < tomorrow.Date.AddDays(1))
.ToListAsync();
return subscriptionsRenewalTomorrow;
}