mysql查詢時間段的方法未必人人都會,下面為您介紹兩種mysql查詢時間段的方法,供您參考,希望對您能有所啟迪。
mysql的時間欄位有date、time、datetime、timestamp等,往往我們在儲存資料的時候將整個時間存在乙個欄位中,採用datetime型別;也可能採用將日期和時間分離,即乙個字段儲存date,乙個字段儲存時間time。無論怎麼儲存,在實際應用中,很可能會出現包含「時間段」型別的查詢,比如乙個訪問記錄資料庫,需要統計每天的訪問數量,這個每天就是乙個時間段。下面介紹mysql查詢時間段的兩種常見方法,其他資料庫也可以類似實現。
方法一:傳統方式,即指定開始時間和結束時間,用"between」或者"<",">"來建立條件,比如查詢2023年3月1日到2023年3月2日的資料條數,則可以使用
select count(*) from sometable where datetimecolumn>='2010-03-01 00:00:00' and
datetimecolumn<'2010-03-02 00:00:00'
但是,這種方法由於時間不是整數型資料,所以在比較的時候效率較低,所以如果資料量較大,可以將時間轉換為整數型的unix時間戳,這就是方法二。
方法二:unix時間戳,每個時間對應了乙個唯一的unix時間戳,該時間戳是從'1970-01-01 00:00:00' 為0開始計時,每秒增加1。mysql內建了傳統時間和unix時間的互換函式,分別為
unix_timestamp(datetime)
from_unixtime(unixtime)
比如執行select unix_timestamp('2010-03-01 00:00:00')
返回1267372800
執行select from_unixtime(1267372800)
返回'2010-03-01 00:00:00'
於是,我們可以將時間欄位裡的資料替換為整型的unix時間,這樣,比較時間就成為整數比較了,建立索引後能大大提高效率。在查詢的時候,需要把起點時間和結尾時間分別轉換為unix時間再進行比較,如
select count(*) from sometable where datetimecolumn>=unix_timestamp('2010-03-01 00:00:00') and
datetimecolumn也可以在呼叫程式中先轉換為unix時間再傳入mysql,總之這種方式有利於快速查詢時間段,不過顯示時間則需要再反轉一次。
mysql根據時間戳查詢資料
比如我們要查詢每天的註冊使用者數量,這裡我們的註冊時間是時間戳的話。我們寫的sql語句就得把時間轉換為日期進行查詢。sql語句如下 函式 from unixtime select count user regnumber,from unixtime reg time y m d as group d...
mysql 固定日期 mysql查詢指定日期
1.今天 select from hb contract in h where to days modify date to days now 2.昨天 select from hb contract in h where to days now to days modify date 1 3.近七...
php日期轉時間戳,指定日期轉換成時間戳
unix時間戳和格式化日期是我們常打交道的兩個時間表示形式,unix時間戳儲存 處理方便,但是不直觀,格式化日期直觀,但是處理起來不如unix時間戳那麼自如,所以有的時候需要互相轉換,下面給出php日期轉時間戳 mysql日期轉換函式互相轉換的幾種轉換方式 寫過php mysql的程式設計師都知道有...