我正在尝试通过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,ErrorCode:30,ErrorMsg:[Amazon] [Amazon Redshift](30)尝试时发生错误执行查询:[SQLState 57014]错误:将文本转换为错误日期
我是Redshift的新手,应该可以使用格式字符串作为参数进行转换,但是显然这不是问题。有人可以启发我解决该问题吗?
您可以在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