将UNIX时间戳转换为区域的本地时间吗?

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

如何将unix时间的字段转换为区域的本地时间?

Timestamp 
1507576891
1507582204
1508777161

当我选择转换为欧洲/柏林当地时间时想要吗?

我正在尝试

Select cast(from_unixtime(time, Europe/Berlin) as date)

但是缺少一些东西,因为我希望结果像2019-12-12 16:32:00

谢谢

sql presto
2个回答
0
投票

您不必强制转换。使用convert_tz转换为您选择的时区。

SELECT convert_tz(from_unixtime(eater_request_epoch), '+00:00','+01:00') as 'localdate'


0
投票

欧洲/柏林时区是格林尼治标准时间+ 1,因此您可以执行以下操作

select convert_tz(from_unixtime(1508777161) ,@@session.time_zone,'+01:00') as 'Europe/Berlin'
// 2017-10-23 17:46:01

更有用:

获取当前时间:

select convert_tz(now(),@@session.time_zone,'+01:00')
// 2019-12-16 09:33:36

和格式化:

SELECT DATE_FORMAT( CONVERT_TZ( NOW( ) , @ @session.time_zone , '+01:00' ) , '%b %d %Y %h:%i:%s %p' )
// Dec 16 2019 09:34:30 PM

要从时区(例如:印度支那时间GMT + 7)获取当前MySQL时间的时差。

select timediff(now(),convert_tz(now(),@@session.time_zone,'+07:00'));
© www.soinside.com 2019 - 2024. All rights reserved.