关于mysql:Mysql中将时间戳转为Date

2次阅读

共计 802 个字符,预计需要花费 3 分钟才能阅读完成。

在工作中遇到一个状况:

日志零碎的表中, 工夫字段存储的是 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')

? 为占位符

正文完
 0