如何按下一个日期实体框架选择所有记录

问题描述 投票:0回答:1

在此方法中,我需要按 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
。但该记录未检索。明天如何更新所有记录?

c# entity-framework entity-framework-core
1个回答
0
投票

+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;
}
© www.soinside.com 2019 - 2024. All rights reserved.