程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySql查詢時光段的辦法

MySql查詢時光段的辦法

編輯:MySQL綜合教程

MySql查詢時光段的辦法。本站提示廣大學習愛好者:(MySql查詢時光段的辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是MySql查詢時光段的辦法正文


本文實例講述了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,總之這類方法有益於疾速查詢時光段,不外顯示時光則須要再反轉一次。

願望本文所述對年夜家的MySQL數據庫法式設計有所贊助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved