我正在尝试使用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的新手,应该期望能够使用格式字符串作为参数进行转换,但是显然这不是问题。有人可以启发我解决该问题吗?
答案 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