Mysql中經(jīng)常用來(lái)存儲(chǔ)日期的數(shù)據(jù)類型有三種:Date、Datetime、Timestamp。
創(chuàng)新互聯(lián)從2013年開(kāi)始,先為萊蕪等服務(wù)建站,萊蕪等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為萊蕪企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。
Date數(shù)據(jù)類型:用來(lái)存儲(chǔ)沒(méi)有時(shí)間的日期。Mysql獲取和顯示這個(gè)類型的格式為“YYYY-MM-DD”。支持的時(shí)間范圍為“1000-00-00”到“9999-12-31”。
Datetime類型:存儲(chǔ)既有日期又有時(shí)間的數(shù)據(jù)。存儲(chǔ)和顯示的格式為 “YYYY-MM-DD HH:MM:SS”。支持的時(shí)間范圍是“1000-00-00 00:00:00”到“9999-12-31 23:59:59”。
Timestamp類型:也是存儲(chǔ)既有日期又有時(shí)間的數(shù)據(jù)。存儲(chǔ)和顯示的格式跟Datetime一樣。支持的時(shí)間范圍是“1970-01-01 00:00:01”到“2038-01-19 03:14:07”。
所有不符合上面所述格式的數(shù)據(jù)都會(huì)被轉(zhuǎn)換為相應(yīng)類型的0值。(0000-00-00或者0000-00-00 00:00:00)
直接使用的 int 好,畢竟時(shí)間戳可以用FROM_UNIXTIME等時(shí)間函數(shù)轉(zhuǎn)換成時(shí)間格式, int 比datetime計(jì)算和比較簡(jiǎn)單一點(diǎn),還有是就是感覺(jué)數(shù)據(jù)量大度的話int應(yīng)該比datetime更快一點(diǎn)。
公司數(shù)據(jù)庫(kù)大牛知,建的道所有的數(shù)據(jù)表關(guān)于時(shí)間的都是intint比datetime計(jì)算簡(jiǎn)單,數(shù)據(jù)量大的話int比datetime儲(chǔ)存速度更快一點(diǎn)。
時(shí)間戳,一個(gè)完整的、可驗(yàn)證的數(shù)據(jù)塊,它表示在特定時(shí)間之前存在的一段數(shù)據(jù),通常是一個(gè)字符序列,標(biāo)識(shí)某個(gè)時(shí)刻的時(shí)間。
利用數(shù)字簽名技術(shù)生成下一代數(shù)據(jù),簽名對(duì)象包括原始文件信息、簽名參數(shù)、簽名時(shí)間等信息。廣泛應(yīng)用于,知識(shí)產(chǎn)權(quán)保護(hù)、合同簽訂、財(cái)務(wù)核算、電子報(bào)價(jià)投標(biāo)、股票交易等領(lǐng)域。
擴(kuò)展資料:
有兩種類型的時(shí)間戳:
1.自建時(shí)間戳:這種時(shí)間戳是獲取時(shí)間接收設(shè)備到時(shí)間戳服務(wù)器的時(shí)間戳,并通過(guò)時(shí)間戳服務(wù)器發(fā)出時(shí)間戳證書(shū)。該時(shí)間戳可用于企業(yè)內(nèi)部責(zé)任的確定,經(jīng)法院證明不具有法律效力。它不能作為一個(gè)法律基礎(chǔ),因?yàn)樗芸赡鼙淮鄹臅r(shí),接收設(shè)備收到的時(shí)間。
2.具有法律效力的時(shí)間戳:是由中國(guó)科學(xué)院國(guó)家時(shí)間中心和北京聯(lián)合信托技術(shù)服務(wù)有限公司共同打造的中國(guó)第三方可信時(shí)間戳認(rèn)證服務(wù)。國(guó)家計(jì)時(shí)中心負(fù)責(zé)計(jì)時(shí)和準(zhǔn)時(shí)監(jiān)控。
要看你的需求了,如果是保存日期與時(shí)間串,可以用datetime和time字段類型,如果是保存UNIX時(shí)間戳,可以用int字段類型。
---------------------
補(bǔ)充回到:
設(shè)置2個(gè)字段,一個(gè)為開(kāi)始時(shí)間,一個(gè)為結(jié)束時(shí)間。
程序里面用當(dāng)前時(shí)間去比對(duì)數(shù)據(jù)庫(kù)里面開(kāi)始時(shí)間和結(jié)束時(shí)間的數(shù)據(jù),符合結(jié)果的就是正在租用期間的數(shù)據(jù)。
SQL語(yǔ)句:
SELECT * FROM 租用表 WHERE 結(jié)束時(shí)間當(dāng)前時(shí)間 AND 開(kāi)始時(shí)間當(dāng)前時(shí)間
通常存儲(chǔ)時(shí)間用datetime類型,現(xiàn)在很多系統(tǒng)也用int存儲(chǔ)時(shí)間,它們有什么區(qū)別?個(gè)人更喜歡使用int這樣對(duì)于日期計(jì)算時(shí)比較好哦,下面我們一起來(lái)看到底那種會(huì)好些。
int
(1).4個(gè)字節(jié)存儲(chǔ),INT的長(zhǎng)度是4個(gè)字節(jié),存儲(chǔ)空間上比datatime少,int索引存儲(chǔ)空間也相對(duì)較小,排序和查詢效率相對(duì)較高一點(diǎn)點(diǎn)
(2)可讀性極差,無(wú)法直觀的看到數(shù)據(jù),可能讓你很惱火
TIMESTAMP
(1)4個(gè)字節(jié)儲(chǔ)存
(2)值以UTC格式保存
(3)時(shí)區(qū)轉(zhuǎn)化 ,存儲(chǔ)時(shí)對(duì)當(dāng)前的時(shí)區(qū)進(jìn)行轉(zhuǎn)換,檢索時(shí)再轉(zhuǎn)換回當(dāng)前的時(shí)區(qū)。
(4)TIMESTAMP值不能早于1970或晚于2037
寫(xiě)過(guò)PHP+MySQL的程序員都知道有時(shí)間差,UNIX時(shí)間戳和格式化日期是我們常打交道的兩個(gè)時(shí)間表示形式,Unix時(shí)間戳存儲(chǔ)、處理方便,但是不直觀,格式化日期直觀,但是處理起來(lái)不如Unix時(shí)間戳那么自如,所以有的時(shí)候需要互相轉(zhuǎn)換,下面給出互相轉(zhuǎn)換的幾種轉(zhuǎn)換方式。
一、在MySQL中完成
這種方式在MySQL查詢語(yǔ)句中轉(zhuǎn)換,優(yōu)點(diǎn)是不占用PHP解析器的解析時(shí)間,速度快,缺點(diǎn)是只能用在數(shù)據(jù)庫(kù)查詢中,有局限性。
1. UNIX時(shí)間戳轉(zhuǎn)換為日期用函數(shù): FROM_UNIXTIME()
一般形式:select FROM_UNIXTIME(1156219870);
2. 日期轉(zhuǎn)換為UNIX時(shí)間戳用函數(shù): UNIX_TIMESTAMP()
一般形式:Select UNIX_TIMESTAMP('2006-11-04 12:23:00′);
舉例:mysql查詢當(dāng)天的記錄數(shù):
$sql=”select * from message Where DATE_FORMAT(FROM_UNIXTIME(chattime),'%Y-%m-%d') = DATE_FORMAT(NOW(),'%Y-%m-%d') order by id desc”;
當(dāng)然大家也可以選擇在PHP中進(jìn)行轉(zhuǎn)換,下面說(shuō)說(shuō)在PHP中轉(zhuǎn)換。
二、在PHP中完成
這種方式在PHP程序中完成轉(zhuǎn)換,優(yōu)點(diǎn)是無(wú)論是不是數(shù)據(jù)庫(kù)中查詢獲得的數(shù)據(jù)都能轉(zhuǎn)換,轉(zhuǎn)換范圍不受限制,缺點(diǎn)是占用PHP解析器的解析時(shí)間,速度相對(duì)慢。
1. UNIX時(shí)間戳轉(zhuǎn)換為日期用函數(shù): date()
一般形式:date('Y-m-d H:i:s', 1156219870);
2. 日期轉(zhuǎn)換為UNIX時(shí)間戳用函數(shù):strtotime()
一般形式:strtotime('2010-03-24 08:15:42');