无法在 Amazon Redshift 中将时间戳转换为日期

Posted

技术标签:

【中文标题】无法在 Amazon Redshift 中将时间戳转换为日期【英文标题】:Unable to convert timestamp to date in Amazon Redshift 【发布时间】:2021-06-22 11:55:58 【问题描述】:

我正在尝试使用 cast(date as date) 将 varchar 字段转换为日期字段,但它抛出错误为“Amazon Invalid operation: Error convert text to date”。

我尝试使用 to_date(date,'Mon DD yyyy') 函数转换同一列,效果很好。

什么可能导致 cast 函数出现这个错误,我可以做些什么来纠正它?

我想专门为此转换使用强制转换。

SELECT DISTINCT cast(activity as date)
from akhil_date_conversion;

我的活动字段的值如下:

Nov 24, 2002 9:02 AM
Jan 21, 2002 9:00 AM
Nov 17, 2002 9:00 AM
Nov 5, 2002 9:00 AM
Feb 17, 2002 10:00 AM
Jan 16, 2009 9:03 AM
Apr 20 2002 13:02 
May 11 2002 19:34 
Aug 11, 2002 12:00 PM

有些有上午/下午,有些没有!

【问题讨论】:

修复您的数据模型,以便您使用正确的数据类型! 这些日期是字符串吗?它们的数据处理格式非常糟糕。您是否有机会以更好的格式接收这些日期(例如2002-08-11 19:34)? 【参考方案1】:

有一个名为 datestyle 的集群参数可用于设置集群的默认日期/时间格式。默认值为 ISO,您所拥有的最接近 POSTGES。这用于输出日期,但也用于解释它们。但是,您的数据中没有一致的日期样式(12 小时和 24 小时格式更改),所以我认为这不适用于您的情况。在默认情况下 CAST 工作之前,您需要编写一些 SQL 将您的数据转换为单一格式。

【讨论】:

以上是关于无法在 Amazon Redshift 中将时间戳转换为日期的主要内容,如果未能解决你的问题,请参考以下文章

如何减少在 Amazon Redshift 中将 pandas 数据帧写入表的时间

如何在 Redshift 中将时间戳(具有毫秒)转换为 EPOCH

如何在 AMAZON REDSHIFT 中将 userip 转换为整数

如何在 Amazon Redshift 中将整数转换为位字符串?

如何在 Amazon Redshift 中将列从字符串更改为日期?

如何更改 Amazon Redshift 中的默认时区?