按营业时间过滤日期范围

时间:2015-11-10 16:45:14

标签: mysql sql openquery

我有一个日期范围:

SET @declared_start_datetime = '11/02/2015 07:00:00'
SET @declared_end_datetime = '11/09/2015 18:00:00'

这一直有效,直到我意识到它从11月2日上午7点到11月9日下午6点才取出所有记录。

我需要做的是从这些日期中提取所有记录,但不包括星期六/星期日,且仅在星期一至星期五的7:00至18:00之间。

我正在使用SQL Server通过链接的MYSQL服务器,所以我使用的是OPENQUERY。这是我到目前为止的一个例子。

DEClare @session varchar(max) = 'SELECT * FROM database.session WHERE CREATIONTIMESTAMP between ''''' + convert(nvarchar(50),@converted_start_datetime, 120) + ''''' and ''''' + convert(nvarchar(50),@converted_end_datetime, 120) + ''''''
SET @session = 'SELECT * INTO ##session FROM OPENQUERY(mxie,''' + @session + ''')'
exec(@session)

如何排除星期六和星期日并将其调整为仅拉开业务开放的时间?

编辑:

DEClare @session varchar(max) = 'SELECT * FROM database.session WHERE ((CREATIONTIMESTAMP between ''''' + convert(nvarchar(50),@converted_start_datetime, 120) + ''''' and ''''' + convert(nvarchar(50),@converted_end_datetime, 120) + ''''')
                                                                            AND (TIME(CREATIONTIMESTAMP) between ''''' + convert(nvarchar(50),@business_opens_time, 108) + ''''' and ''''' + convert(nvarchar(50),@business_closes_time, 108) + '''''))'
SET @session = 'SELECT * INTO ##session FROM OPENQUERY(mxie,''' + @session + ''')'
exec(@session)
select * from ##session
drop table ##session

这并不排除星期六或星期日,但它目前返回0结果。如果我将AND更改为OR,它将返回结果,但不会返回我要查找的内容。

我正在寻找周一至周五上午7:00至下午6:00的每一天。

0 个答案:

没有答案