下面的建議有很多直覺,後面會有更多的直覺。
大多數數據庫並不實際存儲日期/時間信息是一種所見即所得的方式。事實上,如果你足夠長的時間思考,你會明白日期/時間確實是「數字集」。因此,如果數據存儲爲datetime data type
而不是嘗試對日期時間列使用LIKE
(這是用於文本的)。因此,如果計算從date1到date2的天數等等。而應尋找可能適用於您的情況的與日期和時間相關的功能。在這裏,你正在尋找不等於一天的具體時間(我認爲)。所以,從考慮中刪除「日期」將其轉換爲「時間」,然後您可以過濾。
下面我介紹一個新的列jobtime
,它是jobdate
的時間部分,然後我查找任何不等於給定值的時間。
SQL Fiddle
的MySQL 5.6架構設置:
CREATE TABLE Devices
(`locationid` varchar(2), `jobdate` datetime)
;
INSERT INTO Devices
(`locationid`, `jobdate`)
VALUES
('##', '2017-10-23 01:00:00'),
('##', '2017-10-23 19:00:02')
;
查詢1:
select
*
from (
select locationid, cast(jobdate as time) jobtime, jobdate
from devices
) d
where locationid = '##'
and jobtime <> '01:00:00'
;
Results:
| locationid | jobtime | jobdate |
|------------|----------|----------------------|
| ## | 19:00:02 | 2017-10-23T19:00:02Z |
...
爲什麼會出現 「直覺」 上面?(「稍後更多」)
由於供應商之間的語法差異太大,因此不知道使用哪個數據庫非常令人沮喪。知道jobdate column
的EXACTdata type
也很重要 - 因爲如果它是varchar,例如我剛纔在上面的查詢中做了一個完整的傻瓜。換句話說,我們不可能回答,因爲缺少關鍵事實。
最後,你有數據!它已經在你的桌子上了。爲什麼不通過分享一些數據讓每個人都輕鬆?爲您的問題提供「樣本數據」,並提供「預期結果」(即提供2件事,而不是一件沒有另一件,並且不使用數據圖像 !!!)。希望你可以從上面的例子中看到樣本數據&結果是多麼有用。例如,如果我的直覺離開了,即使你沒有閱讀SQL,你也可以馬上知道它是什麼。
饒過了,並非所有這裏提出的問題都適用於這個問題。
請澄清你的問題,真的很難理解你想要什麼。請閱讀:https://stackoverflow.com/help/mcve –
我刪除了不兼容的數據庫標記。請僅使用您真正使用的數據庫進行標記。樣本數據和期望的結果真的有幫助。 –
要麼你有'mysql'或'sql-server'。你的表格列是如何聲明的。請向我們展示相應的CREATE TABLE語句,一些示例數據和預期結果。 –