簡體   English   中英

MySQL-返回兩個日期/時間之間的行

[英]MySQL - Returning rows between two dates/times

我正在使用的MySQL表將日期和時間作為單獨的列。 日期的時間格式為"ymd""hh:mm:ss" 如果行在不同的日子,如何精確搜索兩次之間的行? (例如, 2013-01-15 12:00:002013-01-17 17:00:00之間的行)

現在,我正在使用一種錯誤的解決方法,假設時差最多為一天,但情況並非總是如此。 可能有一種簡單的方法可以完成此操作,但我不知道要做什么。 謝謝!

使用CONCAT連接字段

SELECT  *
FROM    tableName
WHERE   CONCAT(dateCol, ' ', timeColumn) BETWEEN
            '2013-01-15 12:00:00' AND '2013-01-17 17:00:00'

但我建議您( 如果可能 )通過將兩列與數據類型為DateTime合並來更改表,以便您可以利用索引。 上面使用CONCAT的查詢需要full table scan ,這對於大型數據庫而言性能很差。

可以通過以下方法來加快JW。的答案:首先使用索引縮小搜索空間,然后將結果縮小到正確的范圍。

select * from births
where date between '2013-01-15' and '2013-01-17' -- use index
and concat(date, ' ', time) between '2013-01-15 12:00:00' and '2013-01-17 17:00:00' 
;

有關更多詳細信息,請參見此SQL Fiddle

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM