1

从事英国项目。

我放了一个可爱的变量来给我一个星期一到星期五最后一个工作日的开始日期和结束日期。不幸的是,我希望开始日期时间是一天的开始,结束日期是一天的结束。我可以做些什么改变来实现这一点?

SET @Startdate =
  ( CASE
    WHEN DATEPART(WEEKDAY, @Startdate) = 7
      THEN DATEADD(DAY, -2, @Startdate)
    WHEN DATEPART(WEEKDAY, @Startdate) = 1
      THEN DATEADD(DAY, (-2 - DATEPART(WEEKDAY, @Startdate)), @Startdate)
    ELSE
      DATEADD(DAY, -1, @Startdate)
  END )

SET @Enddate = 
  CASE
    WHEN DATEPART(WEEKDAY, @Enddate) = 7
      THEN DATEADD(DAY, -2, @Enddate)
    WHEN DATEPART(WEEKDAY, @Enddate) = 1
      THEN DATEADD(DAY, (-2 - DATEPART(WEEKDAY, @Enddate)), @Enddate)
    ELSE
      DATEADD(DAY, -1, @Enddate) 
  END

print @Startdate 
print @Enddate

结果 :

2013 年 2 月 26 日上午 12:00 2013 年
2 月 26 日上午 12:00

我需要Feb 26 2013 00:00until Feb 27 2013 00:00,所以它涵盖周二全天(如果今天运行,则为最后一个工作日)。

4

2 回答 2

1

实际上 12:00 AM 是 00:00,如果需要,您只需将其转换为另一种格式 ( http://msdn.microsoft.com/en-us/library/ms187928.aspx )。

只需在 2 月 26 日凌晨 12:00 添加一天,您将获得 2 月 27 日凌晨 12:00,即 2 月 27 日 00:00。

于 2013-02-27T18:21:54.750 回答
1

如果您执行粗略的 Google 搜索(为此有很多好的 UDF),这是一个已解决的问题,但要按原样使用您的代码,如果您确实想要 26 日 0:00 到 27 日 0,只需在 @Enddate 计算中添加一个: 00 (或者如果你想要 23:59,可以像 Kenneth Fisher 建议的那样添加略低于 1,这似乎更好)。

于 2013-02-27T18:25:37.497 回答