Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 按营业时间筛选日期范围_Mysql_Sql_Openquery - Fatal编程技术网

Mysql 按营业时间筛选日期范围

Mysql 按营业时间筛选日期范围,mysql,sql,openquery,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:00到11月9日下午6:00提取所有记录时,它才开始工作 我需要它做的是从这些日期中提取所有记录,但不包括星期六/星期天,星期一-星期五仅在7:00到18:00之间 我使用SQL Server通过链接的MYSQL服务器,所以我使用OPE

我有一个日期范围:

SET @declared_start_datetime = '11/02/2015 07:00:00'
SET @declared_end_datetime = '11/09/2015 18:00:00'
直到我意识到它从11月2日上午7:00到11月9日下午6:00提取所有记录时,它才开始工作

我需要它做的是从这些日期中提取所有记录,但不包括星期六/星期天,星期一-星期五仅在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)
我如何排除周六和周日,并将其调整为只提取营业时间

编辑:

这还不排除周六或周日,但它目前返回0个结果。如果我更改AND to或,它将返回结果,但不是我想要的结果


我正在寻找周一到周五,每天从早上7:00到下午6:00。

您可以利用这里的日期/时间函数来修改WHERE子句,使其更加具体。你试过使用它们吗?@MikeBrant我想不出哪一个能保持where子句整洁。我可以重新编写where子句,使其具有一组AND/OR,但这也意味着对于每一行,我的where子句必须在日期/时间上计算几个函数,这将大大降低速度。通过OPENQUERY和链接服务器,我担心运行报告的时间会被推到几分钟,不得不执行如此多的日期/时间转换。您的WHERE子句将不整洁。听起来你的整个设置都不整洁,但这是一个超出这个问题范围的主题。如果你正在为你的设置寻找一个神奇的子弹,没有一个。要获得一个简洁的解决方案,可能需要对数据库模式进行重大重构,可能需要包含一个日期/时间维度表,您可以加入该表来清理问题。@MikeBrant关于where子句有什么建议吗?我已经用当前使用的where子句更新了初始问题,但它不起作用。我不知道MySQL,我是一个SQL专家,必须使用MySQL数据库。
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