【发布时间】:2013-10-15 17:37:33
【问题描述】:
问题:给定一周中的某一天(1、2、3、4、5、6、7)、开始日期和结束日期,计算给定的次数星期几出现在开始日期和结束日期之间,不包括没有销售的日期。
上下文:
“Ticket”表的结构和示例内容如下:
i_ticket_id c_items_total dt_create_time dt_close_time
----------------------------------------------------------------------------
1 8.50 '10/1/2012 10:23:00' '10/1/2012 11:05:05'
2 10.50 '10/1/2012 11:00:00' '10/1/2012 11:45:05'
3 8.50 '10/2/2012 08:00:00' '10/2/2012 09:25:05'
4 8.50 '10/4/2012 08:00:00' '10/4/2012 09:25:05'
5 7.50 '10/5/2012 13:22:23' '10/5/2012 14:33:27'
.
.
233 6.75 '10/31/2012 23:20:00' '10/31/2012 23:55:39'
详情
一个月中的一天或多天可能有也可能没有票。 (即该地点在那一天/那一天关闭)
企业关闭的日子并不规律。没有可预测的模式。
基于Get number of weekdays (Sundays, Mondays, Tuesdays) between two dates SQL, 我派生了一个查询,它返回一周中给定日期在开始日期和结束日期之间出现的次数:
DECLARE @dtStart DATETIME = '10/1/2013 04:00:00'
DECLARE @dtEnd DATETIME = '11/1/2013 03:59:00'
DECLARE @day_number INTEGER = 1
DECLARE @numdays INTEGER
SET @numdays = (SELECT 1 + DATEDIFF(wk, @dtStart, @dtEnd)-
CASE WHEN DATEPART(weekday, @dtStart) @day_number THEN 1 ELSE 0 END -
CASE WHEN DATEPART(weekday, @dtEnd) <= @day_number THEN 1 ELSE 0 END)
现在我只需要过滤这个,这样任何零美元的日子都不包括在计数中。非常感谢您提供的任何帮助,以根据门票表的内容添加此过滤器!
【问题讨论】:
标签: datetime sql-server-2008-r2 datediff