from_unixtime 仍显示比预期时间晚 19 小时

问题描述 投票:0回答:1

我目前有一些经过清理的数据,其中包含新列且格式正确,但是有关 from_unixtime 的子句让我感到困惑。我尝试过以下方法:

from_unixtime(`time@timestamp`, '%H:%i:%s') AS Date_12am,

这是我试图显示“00:03:02”的主要声明,其中时间从午夜开始,持续 24 小时。我位于东部时区,所以我首先尝试了推荐的 shell 命令并验证了我的 MySQL 工作台和配置文件也是正确的时间。我尝试将上述子句设置为当地时间、“SET AS”、“CONVERT”,并尝试使用该格式以查看是否可以获得正确的组合。似乎没有任何效果,所以在这件事上的任何帮助将不胜感激!

SELECT 
from_unixtime(`time@timestamp`),
data_format_0, data_format_1, data_format_2, data_format_3
FROM my_table_name;

/*The above is for checking to see if data is populated.*/

ALTER TABLE my_table_name
CHANGE data_format_0 OneMinuteAverage DOUBLE,
CHANGE data_format_1 ProductName VARCHAR(250),
CHANGE data_format_2 measruement1 DOUBLE,
CHANGE data_format_3 measurement2 DOUBLE;

SELECT 
from_unixtime(`time@timestamp`, '%Y_%m_%d') AS `Date`,
from_unixtime(`time@timestamp`, '%H:%i:%s') AS Date_12am,
ROUND(OneMinuteAverage, 2) AS OneMinuteAverage, 
ProductName, measurement1, measurement2
FROM my_table_name;

Results from above query displaying unix time

mysql unix-timestamp date-conversion timestamp-with-timezone
1个回答
0
投票

unix_timestamp 返回给定纪元秒的本地时间,其中本地表示会话/连接的时区,默认为数据库的默认时区(但某些 ORM 或客户端会根据其环境为您设置)。因此,预计 unix_timestamp(1705968054) 在美国东部标准时间时将返回 19:00:54。我建议避免使用 unix_timestamp 和所有其他使用会话时区的函数。相反,你可以这样做:

select date_format('1970-01-01 00:00:00' + interval 1705968054.906 second, '%H:%i:%s')
© www.soinside.com 2019 - 2024. All rights reserved.