从矩阵(ddd格式的工作日)获取最接近今天的工作日

时间:2012-09-27 14:59:55

标签: c# datetime dayofweek

当我被问及是否可以在工作中找到解决问题的简单解决方案时,我有点头疼。

这是目前的情况:

  • 我们有一个日期(大部分是今天的日期),我可以从中轻松获取工作日参数 dEarliest.ToString( “DDD”);
  • 在一个数据库中,我们有一个注册表,其中某天要执行某项任务,工作日存储为“ddd”格式(即周一,周二,周三,周四等)。

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

我在想enum:s,但我不确定这是否有效,如果有,那怎么样?我对c#很新 因此可能是一个愚蠢的问题。

非常感谢任何帮助。 :)

1 个答案:

答案 0 :(得分:1)

执行此操作的最佳方法是在DateTime的{​​{1}}值(属性DayOfWeek类型为DayOfWeek)和输出之间进行比较SQL Server的enum DayOfWeek函数。

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

DATEPART

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

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

SELECT * FROM <table> WHERE DATEPART(weekday, <column_name>) = (@yesterday+1)部分是因为C#的枚举使用0-6,而SQL Server使用1-7(两者都使用星期日作为第一个索引)。