SQL从时间戳获取日期

时间:2015-11-11 21:32:35

标签: mysql sql

我有一个数据库,其中我的所有数据都有一个unix时间戳作为整数,整数是自1.jan 1970以来的秒数。(就像Time.now.to_i在ruby http://www.unixtimestamp.com中返回的那样)。

有什么方法可以在SQL中从1447277423获取日期?我需要按日期对行进行分组。

我希望在视图中完成此操作,而不是使用其他脚本来执行此操作。

这可能吗?

3 个答案:

答案 0 :(得分:2)

将unix时间戳仅转换为日期(因为你不想要小时/秒),然后按它分组。

SELECT * FROM table
GROUP BY FROM_UNIXTIME(date_timestamp, '%Y %m %d');

或者,如果您不想对它们进行实际分组,只是希望它们按顺序输出,请改为ORDER BY。

SELECT * FROM table
ORDER BY date_timestamp
/* when ordering, it doesn't matter so much if its the whole timestamp or not since the date comes first in the timestamp */

要进一步,您还可以选择格式化的日期

SELECT *, FROM_UNIXTIME(date_timestamp, '%Y %m %d') as date_Ymd FROM table
ORDER BY date_timestamp;

FROM_UNIXTIME docs

答案 1 :(得分:1)

只需使用FROM_UNIXTIME():

group by DATE(FROM_UNIXTIME(your_unix_timestamp_field))

答案 2 :(得分:0)

这是unix时间戳的好处,您可以将其视为整数。

SELECT something FROM table WHERE date >= 1447277423

希望这有帮助