在AWS Quicksight中显示本地时区日期,而不是UTC

11

在阅读 AWS Quicksight 文档时,我找到了以下信息。

如何处理日期和时间的时区:

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 数据集中的一系列日期范围。 我想能够以本地时区表示形式查看这些日期,而不是以 UTC 格式。 是否有任何建议最佳方法或是否可能实现此目标?如果我使用计算字段函数(如 formatDate())或自定义 SQL 的“AT TIME ZONE”语句,则我的日期列将被转换为字符串。然后,任何尝试将这些字符串转换回日期的操作都会将日期再次转换为 UTC 格式。

我已尝试使用以下方法将返回的日期字符串进行转换:

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

然而,这会引发一个错误:“此函数没有正确的参数数量”。

任何建议都将不胜感激。


我在文档中读到:“parseDate不支持与SPICE数据集一起使用。”这可能是您使用parseDate函数遇到问题的原因。 - JcMaco
FYI,现在SPICE支持所有日期函数(和字符串函数)。 - dondata
5个回答

5
我遇到了类似的问题。作为解决方法(无法处理夏令时),您可以使用addDateTime函数。
例如:
  • 计算字段名称:datetimemelbourne
  • 公式:addDateTime(11, 'HH', {datetime})

你还在使用这个解决方法吗?我无法想象为什么AWS还没有修复它。我不觉得使用它很安全,因为每次夏令时转换它都会出问题。 - rfschroeder
是的。我还没有看到QuickSight对此进行任何更新。 - JcMaco

4
这对我有用:
parseDate(toString(formatDate({your_date_time_field},'MM-dd-yyyy HH:mm:ss','America/New_York')),

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


3

我曾经遇到过formatDate返回字符串而parseDate不支持SPICE的问题。最终,以下解决方案对我非常有效。

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

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


2
您需要使用formatDate而不是parseDate。应该像这样:

格式应为:

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

parseDate的作用是将字符串转换为日期。


1

我找到了一个解决方案,适用于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。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接