gpt4 book ai didi

c# - 如何将昨天的日期分配给参数 C#

转载 作者:行者123 更新时间:2023-11-30 13:32:47 25 4
gpt4 key购买 nike

我有一个 C# 程序,它将作为 Windows 计划任务运行。该程序将加载、运行 SQL 查询、通过电子邮件发送存储在数据集中的结果,然后关闭。除了使用 Yesterdays 日期外,我什么都有。

这是我当前的查询:

SELECT        Store_Id, Paid_Out_Amount, Paid_Out_Comment, Paid_Out_Datetime, Update_UserName, Till_Number, @startdate AS Start, @enddate AS Today
FROM Paid_Out_Tb
WHERE (Store_Id = 1929) AND (Paid_Out_Datetime BETWEEN @startdate AND @enddate)

显然我需要在查询时分配@startdate 和@enddate。因为我需要 12AM 到 1159PM,这就是开始和结束的原因。例如。如果我今天想运行程序,它会在昨天(23 日)进行搜索,所以@startdate 将被分配到 7/22/12 00:00:00,@enddate 将被分配到 7/22/12 23:59:59.. .

在查询而不是程序中这样做是否更有意义?如果是这样,我将如何更改查询?

最佳答案

对现有答案略作改进,始终开始而无需调用DateTime 构造函数。

var todayStart = DateTime.Today;
var yesterdayStart = todayStart.AddDays(-1);
var yesterdayEnd = todayStart.AddSeconds(-1); // Ick...

请注意,这将使用当前系统时区作为“今天”的含义 - 您确定这是您想要的吗?您可能希望考虑使用:

var todayUtcStart = DateTime.UtcNow.Date;
...

遗憾的是 BETWEEN 将终点视为包含在内 - 如果它等同于

start <= value && value < end

那么你可以只给出两个午夜值,这样会更清楚。

另请注意,虽然它不会使与数据库的交互更加清晰,但对于日期和时间的其他用途,您可能希望考虑我的 Noda Time库,其中包含一种专门用于表示日期(以及另一种表示“一天中的时间”)等的数据类型。目标当然是使用日期和时间来阐明代码。如果没有,我就失败了!

关于c# - 如何将昨天的日期分配给参数 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11616894/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com