在工作中遇到一个状况:
日志零碎的表中, 工夫字段存储的是 13 位工夫戳 timestamp 而不是日期数据, 而在业务中, 咱们须要通过工夫和 ip 来进行分组查问给定日期的数据.
当然你能够抉择在业务层先将传入的日期转为工夫戳, 再去进行查问, 然而既然 mysql 既然能够间接进行转换, 那么省去在业务层的操作何乐而不为呢?
1. 首先介绍一下 mysql 中将工夫戳和日期相互转换的函数:
工夫戳转换成日期 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')
日期转换为工夫戳UNIX_TIMESTAMP():UNIX_TIMESTAMP('2015-04-15')
%Y 年、%m 月、%d 日、%H 时、%i 分、%s 秒最为罕用
2. 理论应用
在我理论应用中, 我还将
DATE_FORMAT() 函数 (DATE_FORMAT(data,format) 函数用于以不同的格局显示日期 / 工夫数据) 和 FROM_UNIXTIME()来进行转换: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')
? 为占位符