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

时间:2019-09-27 13:35:19

标签: date datepicker amazon-redshift qliksense

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

我在Google上搜索了很多,发现的常见“最佳实践”是将时间戳转换为日期,然后使用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')->结果:02/09/2019

但是,Qlik Sense中的日期选择器扩展仍然不起作用,我想这是因为输出是字符串而不是日期。将字符串强制转换为日期会返回错误。

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

连接器回复错误:SQL ## f-SqlState:57014,错误代码:30,   ErrorMsg:[Amazon] [Amazon Redshift](30)尝试时发生错误   执行查询:[SQLState 57014]错误:将文本转换为错误   日期

我是Redshift的新手,应该期望能够使用格式字符串作为参数进行转换,但是显然这不是问题。有人可以启发我解决该问题吗?

1 个答案:

答案 0 :(得分:0)

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

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

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

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