【问题标题】:Athena Select Query to Covert UTC timestamp to Required zone timestamp formatAthena Select Query 将 UTC 时间戳转换为所需的区域时间戳格式
【发布时间】:2020-05-14 10:57:33
【问题描述】:

我尝试在 Athena 中使用以下查询获取带有额外字符串“America/New_York”的输出,而不是预期的格式,需要使用 athena 查询从值中删除额外的字符串

查询:

SELECT execution_date, execution_date AT TIME ZONE 'America/New_York' as us,AT_TIMEZONE(execution_date, 'America/New_York') as us2 FROM "db"."table" limit 3;

上述查询的输出:

execution_date                  us                                              us2 
2019-12-04 13:50:47.000 2019-12-04 08:50:47.000 America/New_York    2019-12-04 08:50:47.000 America/New_York 

预期输出:

execution_date                  us                                              us2 
2019-12-04 13:50:47.000   2019-12-04 08:50:47.000                       2019-12-04 08:50:47.000 

如果需要更多信息,请告诉我。

【问题讨论】:

  • @RiggsFolly 是的,我正在 Amazon Athena 服务中尝试这个,
  • 我已经删除了 MySQL 标签,因为它让人感到困惑

标签: python sql python-2.7 amazon-athena


【解决方案1】:

我试过了,它有效,但它在 TIMESTAMP 中给出了区域的名称,这可能是也可能不是您要查找的内容。

SELECT AT_TIMEZONE(DATE_PARSE(timestamp,'%Y-%m-%d %H:%i:%s'),'America/Chicago') FROM table_name; 

输出如2020-05-07 17:09:19.000 America/Chicago,根据时区调整TIMESTAMP,最后是时区名称。

我认为这就是 Athena 用时区表示时间戳的方式。

编辑:如果列的类型已经是TIMESTAMP(而不是VARCHAR),那么只需使用AT_TIMEZONE(column_name,'America/Chicago')

【讨论】:

  • 出现以下问题:SYNTAX_ERROR:第 1:89 行:函数 date_parse 的意外参数(时间戳、varchar(17))。预期:date_parse(varchar(x), varchar(y))
  • @Ahito 看起来您的列类型已经是 TIMESTAMP 类型。在这种情况下,只需运行 SELECT AT_TIMEZONE(column_name,'America/Chicago') FROM table_name;
  • 我在上面的查询中对第三个字段(us2)使用了相同的内容,但仍然附加了额外的字符串。想要忽略额外的字符串。
  • 我认为这就是 TIMESTAMPTIMEZONE 在 Athena 中的显示方式。但是,如果您仍然想删除字符串,select replace(column_name,'America/Chicago','') as timestamp_col from table_name 请考虑投票并将答案标记为已接受,因为它回答了您的问题:)
【解决方案2】:

您可以使用它,CONVERT_TZ 帮助您将日期更改为另一个时区

MYSQL 服务器 8:

CONVERT_TZ(timeperiod, 'UTC', 'Asia/Tehran')

WHERE CONVERT_TZ(timeperiod, 'UTC', '{$this->timezone}') 
NOT BETWEEN 
{$timeperiods['today_start']} AND {$timeperiods['today_end']}

【讨论】:

  • 低于错误 - SYNTAX_ERROR:第 1:77 行:函数 convert_tz 未在雅典娜中注册
  • 看看这个链接,你必须将你的mysql更新到版本8。dev.mysql.com/doc/refman/8.0/en/…
  • 他要的是 Athena,而不是 MySQL。好像他放了mysql标签
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-03-09
  • 2013-06-30
  • 1970-01-01
  • 2019-08-15
  • 2013-10-22
  • 2015-08-19
  • 1970-01-01
相关资源
最近更新 更多