是否有一个MySQL函数可以用来将Unix时间戳转换为人类可读的日期?我有一个字段,我节省Unix时间,现在我想添加另一个字段为人类可读的日期。
当前回答
使用FROM_UNIXTIME ():
SELECT
FROM_UNIXTIME(timestamp)
FROM
your_table;
参见:MySQL文档FROM_UNIXTIME()。
其他回答
我认为你要找的是FROM_UNIXTIME()
因为我发现这个问题没有意识到,mysql总是在UTC时间戳字段中存储时间,但会显示(例如phpmyadmin)在本地时区,我想添加我的发现。
我有一个自动更新的last_modified字段,定义为:
`last_modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
使用phpmyadmin查看它,它看起来是本地时间,内部是UTC
SET time_zone = '+04:00'; // or '+00:00' to display dates in UTC or 'UTC' if time zones are installed.
SELECT last_modified, UNIX_TIMESTAMP(last_modified), from_unixtime(UNIX_TIMESTAMP(last_modified), '%Y-%c-%d %H:%i:%s'), CONVERT_TZ(last_modified,@@session.time_zone,'+00:00') as UTC FROM `table_name`
在任何星座中,UNIX_TIMESTAMP和“as UTC”总是以UTC时间显示。
运行两次,第一次不设置time_zone。
为什么要把字段保存为可读?只有我们AS
SELECT theTimeStamp, FROM_UNIXTIME(theTimeStamp) AS readableDate
FROM theTable
WHERE theTable.theField = theValue;
编辑:对不起,我们以毫秒而不是秒来存储所有内容。固定它。
如果你想转换时间并以特定的格式显示数据,你可以使用这个字符串。
date_format(convert_tz(from_unixtime(TIMESTAMP), 'UTC', 'DESIRED TZ'), '%m/%d/%y')
将convert_tz添加到date_format字符串。%m/%d/%y表示月/日/年。 你可以在这里找到所有具体的格式https://www.w3schools.com/sql/func_mysql_date_format.asp
其他答案(在撰写本文时)中所缺少且不太明显的是from_unixtime可以接受第二个参数来指定格式,如下所示:
SELECT
from_unixtime(timestamp, '%Y %D %M %H:%i:%s')
FROM
your_table
推荐文章
- MySql: Tinyint (2) vs Tinyint(1) -有什么不同?
- 如何在MySQL表中移动列?
- 在MySQL中选择最后一行
- 如何删除MySQL root密码
- MySQL对重复键更新在一个查询中插入多行
- mysql_connect():[2002]没有这样的文件或目录(试图通过unix:///tmp/mysql.sock连接)在
- MySQL:如何复制行,但改变几个字段?
- 不能删除或更新父行:外键约束失败
- Mysql错误1452:不能添加或更新子行:外键约束失败
- MySQL DISTINCT在GROUP_CONCAT()上
- 第一次设计数据库:我是否过度设计了?
- MySQL选择一个列DISTINCT,与其他列相对应
- 错误1022 -不能写;表中重复的键
- 如何修改列和更改默认值?
- 如何在MySQL 8.0中授予root用户所有权限