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