我正在尝试查找在特定日期和时间发生的客户约定,
我认为我的日期部分是正确的,但我似乎无法正确设定时间。
SELECT EngagementNumber,
StartDate,
StartTime
FROM Engagements
WHERE StartDate LIKE '2012-10-%%'
AND StartTime BETWEEN '12:00:00.0000000' AND '17:00:00.0000000';
答案 0 :(得分:0)
你有一个原因是因为你选择用2个数据库标记你的问题,但每个数据库的语法都非常不同。
另一个是没有一些关键事实"我们只是猜测。例如what is the datatype of StartTime ??
这对解决方案至关重要,因为如果数据类型为DATE
,那么这将失败WHERE StartDate LIKE '2012-10-%%'
但如果数据类型为VARCHAR
或类似,那么它将起作用(类型)。我们还需要知道StartTime的数据类型。
所以:如果
以下是您的查询可能如何运作的示例,请参阅SQL Fiddle上的演示
示例数据(MySQL):
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')
;
查询1 :
SELECT EngagementNumber,
StartDate,
StartTime
FROM Engagements
WHERE StartDate >= '2017-10-01' and StartDate < '2017-11-01'
AND StartTime BETWEEN '12:00' AND '17:00'
<强> Results 强>:
| EngagementNumber | StartDate | StartTime |
|------------------|----------------------|-----------|
| 2 | 2017-10-01T00:00:00Z | 14:15:16 |
| 3 | 2017-10-11T00:00:00Z | 15:16:17 |
请注意,同样的查询在SQL Server中也可以使用,数据类型与此处假设的相同。
最后一点。如果数据类型是日期&amp;那时候他们不是STRINGS(文本),即使他们看起来像他们。所以喜欢2012-10%&#39;不会起作用,但是将日期/时间信息存储为叮咬并不是一个好主意。