前言
在工作中遇到一個(gè)情況:
日志系統(tǒng)的表中,時(shí)間字段存儲(chǔ)的是13位時(shí)間戳timestamp而不是日期數(shù)據(jù),而在業(yè)務(wù)中,我們需要通過時(shí)間和ip來進(jìn)行分組查詢給定日期的數(shù)據(jù).
當(dāng)然你可以選擇在業(yè)務(wù)層先將傳入的日期轉(zhuǎn)為時(shí)間戳,再去進(jìn)行查詢,但是既然mysql既然可以直接進(jìn)行轉(zhuǎn)換,那么省去在業(yè)務(wù)層的操作何樂而不為呢?
1.首先介紹一下mysql中將時(shí)間戳和日期互相轉(zhuǎn)換的函數(shù):
時(shí)間戳轉(zhuǎn)換成日期FROM_UNIXTIME():
FROM_UNIXTIME(1429063399,'%Y-%m-%d %H:%i:%s')
如果不需要時(shí)分秒,'%Y-%m-%d'就好
上面例子中使用的是10位時(shí)間戳,若是13位時(shí)間戳需要/1000,如下:
FROM_UNIXTIME(1429063399123/1000,'%Y-%m-%d %H:%i:%s')
日期轉(zhuǎn)換為時(shí)間戳UNIX_TIMESTAMP():
UNIX_TIMESTAMP('2015-04-15')
%Y年、%m月、%d日、%H時(shí)、%i分、%s秒最為常用
2.實(shí)際使用
在我實(shí)際使用中,我還將
DATE_FORMAT()函數(shù)(DATE_FORMAT(data,format) 函數(shù)用于以不同的格式顯示日期/時(shí)間數(shù)據(jù))和FROM_UNIXTIME()來進(jìn)行轉(zhuǎn)換:
DATE_FORMAT(FROM_UNIXTIME(DateTime/1000),'%Y-%m-%d')
SELECT ip,DATE_FORMAT(FROM_UNIXTIME(timestamp/1000),'%Y-%m-%d') as date,count(*)
FROM s_page
where DATE_FORMAT(FROM_UNIXTIME(timestamp/1000),'%Y-%m-%d') = ?
GROUP BY ip,DATE_FORMAT(FROM_UNIXTIME(timestamp/1000),'%Y-%m-%d')
?為占位符
總結(jié)
到此這篇關(guān)于Mysql中時(shí)間戳轉(zhuǎn)為Date的文章就介紹到這了,更多相關(guān)Mysql時(shí)間戳轉(zhuǎn)為Date內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:- MySQL中日期和時(shí)間戳互相轉(zhuǎn)換的函數(shù)和方法
- 詳解MySQL日期 字符串 時(shí)間戳互轉(zhuǎn)
- PHP+Mysql日期時(shí)間如何轉(zhuǎn)換(UNIX時(shí)間戳和格式化日期)
- mysql時(shí)間戳轉(zhuǎn)成常用可讀時(shí)間格式的兩種方法
- mysql之TIMESTAMP(時(shí)間戳)用法詳解
- mysql 獲取今天、昨天0點(diǎn)時(shí)間戳的實(shí)例
- MySQL表中添加時(shí)間戳的幾種方法