這對廣告客戶聯繫他們的客戶需要通過標準來排序數據庫:排序按日期時間,只剩下空空的時間在年底
如果沒有指定日期這是一個無關緊要的接觸,並應列出在底部。
如果指定日期但時間不是,那麼它應該列在該日期的底部。
字段 'contact_request' 是DATETIME
因此,目標:
- 無日期條目(0000-00-00:00:00)應在表的末尾列出。
- 應在日期結束時列出永恆項(%00:00:00)。
所以期望的結果是這樣的(00:00:00末,否則排序ASC):
2017-01-21 09:00:00 | 1
2017-03-21 00:00:00 | 2
2017-03-22 11:00:00 | 3
2017-01-18 10:00:00 | 4
2017-03-21 10:00:00 | 5
0000-00-00 00:00:00 | 6
0000-00-00 00:00:00 | 7
這使得錯誤的序列(4,1,5,3,2, ..而不是正確的4,1,5,2,3,..):
ORDER BY
CASE
WHEN contact_request = '0000-00-00' THEN 3
WHEN contact_request NOT LIKE '%00:00:00' THEN 1
ELSE 2
END,
contact_request ASC
無法弄清楚如何做到這一點?
SQLFiddle:http://sqlfiddle.com/#!9/5c6c3/6(沒有 '0000-00-00 00:00:00' 拋出一個錯誤,但是這反正一個容易)
所以數據類型爲字符串?不是日期時間?你將需要拆分日期/時間。當時間是00:00:00時,您需要將其設置爲24:00:00,因爲沒有這樣的時間。那麼它會正確排序。但是這是假設字符串數據。因此,如果日期不是000且時間爲零,則假設24小時日期格式,則將00:00:00替換爲24:00:00。 – xQbert
提示:將您的CASE放在SELECT列表中 - 並使用它來訂購 – Randy
在您的文章中一遍又一遍地重複相同的內容是毫無用處的。請不要這樣做。如果你這樣做是爲了繞過最小文本限制,不要。相反,要更好地解釋你的問題或問題。如果因爲這個原因你沒有這樣做,反正不要這樣做。這是不必要的噪音和混亂,應該刪除。 –