[英]How can I use the WHERE clause to filter a date and range of time?
我正在嘗試查找在特定日期和時間發生的客戶互動,
我想我的日期部分是正確的,但是我似乎無法正確設置時間。
SELECT EngagementNumber,
StartDate,
StartTime
FROM Engagements
WHERE StartDate LIKE '2012-10-%%'
AND StartTime BETWEEN '12:00:00.0000000' AND '17:00:00.0000000';
您投反對票的一個原因是您選擇用 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'
結果:
| EngagementNumber | StartDate | StartTime |
|------------------|----------------------|-----------|
| 2 | 2017-10-01T00:00:00Z | 14:15:16 |
| 3 | 2017-10-11T00:00:00Z | 15:16:17 |
請注意,相同的查詢也適用於 SQL Server,因為數據類型與此處假設的相同。
最后一點。 如果數據類型是日期和時間,那么即使它們看起來像,它們也不是字符串(文本)。 所以 LIKE '2012-10%' 將不起作用,但無論如何將日期/時間信息存儲為刺痛都不是一個好主意。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.