1

当我被问到是否能找到一个简单的解决方案来解决工作中的问题时,我感到有点头疼。

这是目前的情况:

  • 我们有一个日期(主要是今天的日期),我可以使用 dEarliest.ToString("ddd"); 轻松获取 Weekday 参数。
  • 在数据库中,我们有一个特定任务将在哪一天执行的寄存器,工作日存储为“ddd”格式(即周一、周二、周三、周四等)。

而且,问题是,我怎样才能得到数据库记录中最接近今天的哪一天?我一直坐在这里试图通过一些“智能”SQL 查询来解决这个问题,但我只是不知道如何解决这个问题。

我在想枚举:s,但我不确定这是否可行,如果可行,如何?我对 c# 很陌生,因此可能是一个愚蠢的问题。

任何帮助将不胜感激。:)

4

1 回答 1

1

最好的方法是在DateTime'DayOfWeek值(属性DayOfWeek类型为enum DayOfWeek)和 SQL ServerDATEPART函数的输出之间进行比较。

例如,如果您想获取昨天的所有任务,您可以在 C# 中执行此操作:

int yesterday = ((int)(DateTime.Now.DayOfWeek))-1;

然后将该值传递给执行此操作的 SQL 语句:

SELECT * FROM <table> WHERE DATEPART(weekday, <column_name>) = (@yesterday+1)

@yesterday+1部分是因为 C# 的枚举使用 0-6 表示天数,而 SQL Server 使用 1-7(两者都使用星期日作为第一个索引)。

于 2012-09-27T18:24:17.950 回答