使用 PostgreSQL (AWS Redshift) 将 Qlik Sense 日期选择器扩展的日期格式从 'M/D/YYYY' 更改为 'DD/MM/YYYY'

Change date format with PostgreSQL (AWS Redshift) from 'M/D/YYYY' to 'DD/MM/YYYY' for Qlik Sense date picker extension

我正在尝试使用 AWS Redshift 将时间戳字段的格式更改为特定格式的日期字段。

我在谷歌上搜索了很多,发现常见的 "best practice" 是将时间戳转换为日期,然后使用 to_char 将其转换为正确的格式。最后,我想在 Qlik Sense 仪表板中使用日期字段,它是日期选择器扩展的输入,显然需要格式 DD/MM/YYYY 才能工作。

数据库中的当前日期格式: 9/2/2019 6:38:00 AM(我会描述为 M/D/YYYY H:MM:SS ZZ)

期望的输出: DD/MM/YYYY,结果为 02/09/2019

当前状态: to_char(cast(timestamp_field as date), 'DD/MM/YYYY') --> 结果:2019 年 2 月 9 日

但是,Qlik Sense 中的日期选择器扩展仍然不起作用,我猜这是因为输出是字符串而不是日期。将字符串转换为日期 returns 出错。

cast(to_char(cast(timestamp_field as date), 'DD/MM/YYYY') as date) as date_picker_date

Connector reply error: SQL##f - SqlState: 57014, ErrorCode: 30, ErrorMsg: [Amazon][Amazon Redshift] (30) Error occurred while trying to execute a query: [SQLState 57014] ERROR: Error converting text to date

我是 Redshift 的新手,本来希望能够使用格式字符串作为参数转换为日期,但显然这不是问题。有人可以启发我如何解决这个问题吗?

您可以尝试使用 QlikSense 脚本开头的时间戳。 它将位于脚本的开头。在主要部分中,如下所示:

SET TimestampFormat='M/D/YYYY h:mm:ss[.fff] TT';

此处 SET 用于定义该应用程序中的时间戳。 您可以尝试在此处更改为您的要求。 其他 2 选项 1 使用您已经使用过的图章或从库中创建您自己的扩展 邮票的使用可以这样:

Datestamp_Table:
Load *,
Date(Date#(StringDate,'M/D/YY'),'DD/MMM/YY') as Date;
LOAD * INLINE [
StringDate
8/7/97
8/6/97];

输出将是这样的:

Stringdate   Date
8/7/97       07/Aug/97
8/6/97       06/Aug/97