在工作中遇到一个状况:

日志零碎的表中,工夫字段存储的是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_pagewhere DATE_FORMAT(FROM_UNIXTIME(timestamp/1000),'%Y-%m-%d') = ?GROUP BY ip,DATE_FORMAT(FROM_UNIXTIME(timestamp/1000),'%Y-%m-%d')

?为占位符