致力于英国项目。
我把一个可爱的变量放在一个星期一到星期五的最后一个工作日的开始日期和结束日期。不幸的是,我希望开始日期时间是一天的开始,结束日期是一天的结束。我可以做些什么来改变这种情况?
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 AM
2013年2月26日12:00 AM
我需要Feb 26 2013 00:00
直到Feb 27 2013 00:00
,因此它涵盖了星期二的整天(如果今天运行的最后一个工作日)。
答案 0 :(得分:1)
实际上午12:00是00:00,如果需要(http://msdn.microsoft.com/en-us/library/ms187928.aspx),您只需要将其转换为其他格式。
只需将一天添加到2月26日中午12:00,您将在2月27日凌晨00:00 00截至2月27日00:00。
答案 1 :(得分:1)
如果您执行粗略的Google搜索(许多优秀的UDF),这是一个已解决的问题,但要按原样使用您的代码,只需在@Enddate计算中添加一个,如果您确实希望第26个0:00到27日0:00(或者像肯尼斯费舍尔那样加入1以下,如果你想要23:59,那似乎更好)。