如何将unix时间的字段转换为区域的本地时间?
Timestamp
1507576891
1507582204
1508777161
我要选择转换为欧洲/柏林当地时间吗?
我正在尝试
Select cast(from_unixtime(time, Europe/Berlin) as date)
但是缺少一些东西,因为我希望结果像 2019-12-12 16:32:00
谢谢
答案 0 :(得分:1)
presto:default> SELECT at_timezone(from_unixtime(1507576891), 'Europe/Berlin');
_col0
---------------------------------------
2017-10-09 21:21:31.000 Europe/Berlin
答案 1 :(得分:0)
您不必强制转换。使用convert_tz转换为您选择的时区。
Employee
答案 2 :(得分: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
要使用您当前的MySQL时间从时区(例如Indochina Time GMT + 7)获取时差:
select timediff(now(),convert_tz(now(), @@session.time_zone, '+07:00'));