【问题标题】:Display Date as Local Timzone, not UTC in AWS Quicksight在 AWS Quicksight 中将日期显示为本地时区,而不是 UTC
【发布时间】:2018-11-09 23:00:17
【问题描述】:

所以通过阅读 AWS Quicksight 文档,我发现了以下信息。

Handling Date Time Zones:

Amazon QuickSight 使用 UTC 时间来查询、过滤和显示日期数据。 当日期数据未指定时区时,Amazon QuickSight 会采用 UTC 值。如果日期数据确实指定了时区,Amazon QuickSight 会将其转换为以 UTC 时间显示。例如,时区偏移量为 2015-11-01T03:00:00-08:00 的日期字段将转换为 UTC,并在 Amazon QuickSight 中显示为 2015-11-01T15:30:00。

我在 Quicksight 中分析的 Athena 数据集中有一系列日期。我希望能够在 Quicksight 中将这些日期视为本地时区表示,而不是 UTC 格式。任何人都可以建议最好的方法是什么,或者是否有可能?似乎如果我使用像 formatDate() 这样的计算字段函数,甚至是“AT TIME ZONE”的自定义 SQL,那么我的日期列就会转换为字符串。然后,任何将这些字符串转换回日期的尝试只需将日期转换回 UTC 格式。

我尝试将返回的日期字符串转换为:

parseDate({NEWDATE}, "yyyy-MM-dd HH:mm:ss.SSS ZZZ", "Australia/Melbourne")

但是,这会不断引发错误“此函数没有正确数量的参数”。

感谢任何建议。

【问题讨论】:

  • 我在文档中读到“不支持将 parseDate 与 SPICE 数据集一起使用。”。这可能就是您遇到 parseDate 函数问题的原因。
  • 仅供参考,SPICE 现在支持所有日期函数(和字符串函数)

标签: amazon-web-services amazon-quicksight


【解决方案1】:

我遇到过类似的问题。作为一种解决方法(不处理 DST),您可以使用 addDateTime 函数。

例如:

  • 计算的文件名:datetimemelbourne
  • 公式:addDateTime(11, 'HH', {datetime})

【讨论】:

  • 您还在使用这种解决方法吗?我无法想象为什么 AWS 还没有修复它。我觉得自己使用它并不安全,因为每个 DST 时刻它都会中断。
  • 是的。我还没有看到 QuickSight 对此的任何更新。
【解决方案2】:

formatDate 返回字符串和 parseDate 不支持 SPICE 时遇到同样的问题。最后,以下解决方案对我来说效果很好。

parseDate(formatDate({DATE}, 'yyyy-MM-dd', 'America/New_York'))

formatDate 返回所需时区的字符串,而 parseDate 将其转换回日期。由于 SPICE 的 parseDate 问题,我没有找到保持时间的方法,但这并不重要,因为我关心日期。

【讨论】:

    【解决方案3】:

    这对我有用:

    parseDate(toString(formatDate({your_date_time_field},'MM-dd-yyyy HH:mm:ss','America/New_York')),
    

    'MM-dd-yyyy HH:mm:ss' )

    【讨论】:

      【解决方案4】:

      您将希望使用 formatDate,而不是 parseDate。应该是这样的:

      formatDate({your date field},"MM/dd/yy HH:mm",'America/Los_Angeles')
      

      parseDate 用于将字符串转换为日期。

      【讨论】:

        【解决方案5】:

        我找到了一种适用于这种 addDateTime 组合的解决方案,但使用 ifelse()

        ifelse(
        (
            
            (
                extract("MM", {your_date}) >= 3 
                AND 
                extract("DD", {your_date}) >= 14
            ) OR (
                extract("MM", {your_date}) <= 11
                AND 
                extract("DD", {your_date}) <= 7
            )
        ), 
        addDateTime(-4, "HH", {your_date}),
        addDateTime(-5, "HH", {your_date}))
        

        这将用于从 UTC 转换为 EST。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2020-09-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-06-30
          • 2019-02-12
          相关资源
          最近更新 更多