mysql根據時間戳查詢指定日期內數據

MySql查詢時間段的方法未必人人都會,下面爲您介紹兩種MySql查詢時間段的方法,供您參考,但願對您能有所啓迪。 MySql的時間字段有date、time、datetime、timestamp等,每每咱們在存儲數據的時候將整個時間存在一個字段中,採用datetime類型;也可能採用將日期和時間分離,即一個字段存儲date,一個字段存儲時間time。不管怎麼存儲,在實際應用中,極可能會出現包含「時間段」類型的查詢,好比一個訪問記錄數據庫,須要統計天天的訪問數量,這個天天就是一個時間段。下面介紹MySql查詢時間段的兩種常見方法,其餘數據庫也能夠相似實現。 方法一:傳統方式,即指定開始時間和結束時間,用"between」或者"<",">"來創建條件,好比查詢2010年3月1日到2010年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_TIMESTAMP('2010-03-02 00:00:00') 也能夠在調用程序中先轉換爲UNIX時間再傳入MySql,總之這種方式有利於快速查詢時間段,不過顯示時間則須要再反轉一次。數據庫

相關文章
相關標籤/搜索