📅  最后修改于: 2023-12-03 14:44:28.589000             🧑  作者: Mango
在 MySQL 中,时间戳通常以 Unix 时间戳的形式存储。Unix 时间戳是指从 1970 年 1 月 1 日 00:00:00 UTC(协调世界时)开始计算时经过的秒数。在 MySQL 中,时间戳通常存储为 INT 或 BIGINT 类型的整数值。
有时我们需要从时间戳中选择不同的日期,例如选择某个月、某一天或某一个小时。下面将介绍如何在 MySQL 中实现这些功能。
要选择某个月,我们需要使用 MySQL 中的 FROM_UNIXTIME
函数。FROM_UNIXTIME
函数将 Unix 时间戳转换为日期时间格式。我们可以使用 %Y-%m
格式的参数获取年份和月份的部分。具体用法如下:
SELECT FROM_UNIXTIME(timestamp, '%Y-%m') AS month FROM table_name;
其中,timestamp
是存储时间戳的字段,table_name
是要查询的表名。这条 SQL 语句将返回存储在 timestamp
字段中所有记录的年份和月份,例如:
| month |
------------
| 2022-01 |
| 2022-01 |
| 2021-12 |
| 2021-12 |
要选择某一天,我们需要和选择某个月时一样使用 FROM_UNIXTIME
函数。不同的是,我们需要使用 %Y-%m-%d
格式的参数获取年份、月份和日期的部分。具体用法如下:
SELECT FROM_UNIXTIME(timestamp, '%Y-%m-%d') AS date FROM table_name;
其中,timestamp
是存储时间戳的字段,table_name
是要查询的表名。这条 SQL 语句将返回存储在 timestamp
字段中所有记录的日期,例如:
| date |
--------------
| 2022-01-08 |
| 2022-01-07 |
| 2022-01-06 |
| 2022-01-05 |
要选择某一个小时,我们需要使用 FROM_UNIXTIME
函数和 %Y-%m-%d %H
格式的参数。%H
获取小时的部分。具体用法如下:
SELECT FROM_UNIXTIME(timestamp, '%Y-%m-%d %H') AS hour FROM table_name;
其中,timestamp
是存储时间戳的字段,table_name
是要查询的表名。这条 SQL 语句将返回存储在 timestamp
字段中所有记录的小时,例如:
| hour |
-------------------
| 2022-01-08 13 |
| 2022-01-08 12 |
| 2022-01-08 11 |
| 2022-01-08 10 |
| 2022-01-08 09 |
| 2022-01-08 08 |
| 2022-01-08 07 |
| 2022-01-08 06 |
| 2022-01-08 05 |
| 2022-01-08 04 |
| 2022-01-08 03 |
| 2022-01-08 02 |
| 2022-01-08 01 |
| 2022-01-08 00 |