使用MySQL将Unix时间戳转换为人类可读日期

Kin*_*ien 207 mysql unix-timestamp

是否有MySQL函数可用于将Unix时间戳转换为人类可读日期?我有一个字段用于保存Unix时间,现在我想为人类可读日期添加另一个字段.

Cri*_*tiC 363

用途FROM_UNIXTIME():

SELECT
  FROM_UNIXTIME(timestamp) 
FROM 
  your_table;
Run Code Online (Sandbox Code Playgroud)

另请参阅: MySQL文档FROM_UNIXTIME().

  • 这是`from_unixtime`的官方文档:http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_from-unixtime (3认同)

Use*_*ser 99

其他答案中缺少的内容(截至本文撰写时)并没有直接明显的是,from_unixtime还可以采用格式参数,例如:

SELECT
  from_unixtime(timestamp, '%Y %D %M %H:%i:%s')
FROM 
  your_table
Run Code Online (Sandbox Code Playgroud)

  • 非常小的问题,但%h是12小时格式的小时,然后需要%p才能完成(AM/PM).或%H以24小时格式提供小时数. (20认同)

Ted*_*opp 31

我想你要找的是 FROM_UNIXTIME()


elb*_*and 18

需要特定时区的unix时间戳吗?

如果您可以快速访问mysql cli,这是一个单行程序:

mysql> select convert_tz(from_unixtime(1467095851), 'UTC', 'MST') as 'local time';

+---------------------+
| local time          |
+---------------------+
| 2016-06-27 23:37:31 |
+---------------------+
Run Code Online (Sandbox Code Playgroud)

替换'MST'为您想要的时区.我住在亚利桑那州,因此从UTC转换为MST.


jos*_*row 6

为什么要把字段保存为可读?只有我们AS

SELECT theTimeStamp, FROM_UNIXTIME(theTimeStamp) AS readableDate
               FROM theTable
               WHERE theTable.theField = theValue;
Run Code Online (Sandbox Code Playgroud)

编辑:对不起,我们以毫秒为单位存储所有内容,而不是秒.固定它.


Bri*_*y37 5

您可以使用 DATE_FORMAT 函数。 是一个包含示例的页面,以及可用于选择不同日期组件的模式。