Mysql 如何使用WHERE子句筛选日期和时间范围?
我试图找到在特定日期和时间发生的客户约定 我想我的日期部分是正确的,但是我似乎无法正确设置时间Mysql 如何使用WHERE子句筛选日期和时间范围?,mysql,sql,sql-server,Mysql,Sql,Sql Server,我试图找到在特定日期和时间发生的客户约定 我想我的日期部分是正确的,但是我似乎无法正确设置时间 SELECT EngagementNumber, StartDate, StartTime FROM Engagements WHERE StartDate LIKE '2012-10-%%' AND StartTime BETWEEN '12:00:00.0000000' AND '17:00:00.0000000'; 您有否决票的一个原因是,您选择用两个数
SELECT EngagementNumber,
StartDate,
StartTime
FROM Engagements
WHERE StartDate LIKE '2012-10-%%'
AND StartTime BETWEEN '12:00:00.0000000' AND '17:00:00.0000000';
您有否决票的一个原因是,您选择用两个数据库标记您的问题,但每个数据库的语法都非常不同
另一个原因是,没有一些“关键事实”,我们只是在猜测。e、 g.
StartTime的数据类型是什么???
这对解决方案至关重要,因为如果数据类型是DATE
,那么在StartDate如“2012-10-%%”的情况下,这将失败,
但是如果数据类型是VARCHAR
或类似的,那么它将工作(某种程度上)。我们还需要知道StartTime的数据类型
So:IF
CREATE TABLE Engagements
(`EngagementNumber` int, `StartDate` datetime, `StartTime` time)
;
INSERT INTO Engagements
(`EngagementNumber`, `StartDate`, `StartTime`)
VALUES
(1, '2017-09-01 00:00:00', '13:14:15'),
(2, '2017-10-01 00:00:00', '14:15:16'),
(3, '2017-10-11 00:00:00', '15:16:17')
;
SELECT EngagementNumber,
StartDate,
StartTime
FROM Engagements
WHERE StartDate >= '2017-10-01' and StartDate < '2017-11-01'
AND StartTime BETWEEN '12:00' AND '17:00'
| EngagementNumber | StartDate | StartTime |
|------------------|----------------------|-----------|
| 2 | 2017-10-01T00:00:00Z | 14:15:16 |
| 3 | 2017-10-11T00:00:00Z | 15:16:17 |
查询1:
CREATE TABLE Engagements
(`EngagementNumber` int, `StartDate` datetime, `StartTime` time)
;
INSERT INTO Engagements
(`EngagementNumber`, `StartDate`, `StartTime`)
VALUES
(1, '2017-09-01 00:00:00', '13:14:15'),
(2, '2017-10-01 00:00:00', '14:15:16'),
(3, '2017-10-11 00:00:00', '15:16:17')
;
SELECT EngagementNumber,
StartDate,
StartTime
FROM Engagements
WHERE StartDate >= '2017-10-01' and StartDate < '2017-11-01'
AND StartTime BETWEEN '12:00' AND '17:00'
| EngagementNumber | StartDate | StartTime |
|------------------|----------------------|-----------|
| 2 | 2017-10-01T00:00:00Z | 14:15:16 |
| 3 | 2017-10-11T00:00:00Z | 15:16:17 |
请注意,如果数据类型与此处假设的数据类型相同,那么同样的查询也可以在SQL Server中使用
最后一个音符。如果数据类型是日期和时间,则它们不是字符串(文本),即使它们看起来像字符串。因此,像“2012-10%”这样的选项不起作用,但将日期/时间信息存储为stings无论如何都不是一个好主意。sql server和mysql引用不同,请选择其中任何一个。StartTime的数据类型是什么?提供表定义和示例数据集。我还想问为什么StartDate和StartTime位于不同的列中。在您的设计中,是否可以将它们合并到一个列中?您的问题现在解决了吗?你对这个答案还有疑问吗?若要接受答案“”,请参阅