我在 MySQL 数据库中有一个列,其中包含以毫秒(纪元)为单位的日期。我想构建一个 SQL 查询,将日期格式化为人类可读的格式(日、月、年、小时、分钟、秒,任何格式和时区)。是否有一个 SQL(或 MySQL 特定的)函数来执行此操作?
问问题
64033 次
3 回答
61
尝试使用手册FROM_UNIXTIME
中给出的这样的功能
选择 FROM_UNIXTIME(1196440219); -> '2007-11-30 10:30:19'
您也可以使用这样的格式
mysql> SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(), -> '%Y %D %M %h:%i:%s %x'); -> '2007 年 11 月 30 日 10:30:59 2007'
于 2013-08-11T20:01:47.433 回答
15
如果要从字段中获取微秒,请使用 %f,
select FROM_UNIXTIME(DATE_COLUMN/1000,'%Y-%M-%d %H:%i:%s %f') from TABLE_NAME;
+-------------------------------------------------------+
| FROM_UNIXTIME(CREATETIME/1000,'%Y-%M-%d %H:%i:%s %f') |
+-------------------------------------------------------+
| 2016-March-18 16:02:54 342000 |
+-------------------------------------------------------+
于 2016-04-07T06:58:09.290 回答
0
CREATE DEFINER=`root`@`localhost` FUNCTION `ConvertTimeDelta`(duration int) RETURNS
varchar(20) CHARSET utf8mb4
DETERMINISTIC
BEGIN
DECLARE time_delta VARCHAR(20);
DECLARE date_format VARCHAR(20);
SET date_format = IF (duration > 3599999, '%H:%i:%s', '%i:%s');
SET time_delta = TIME_FORMAT(SEC_TO_TIME(duration/1000), date_format);
RETURN time_delta;
END
例如选择 ConvertTimeDelta(4800240) 结果 = 01:20:00 选择 ConvertTimeDelta(35076) 结果 = 00:35
于 2019-04-03T00:28:15.847 回答