无法在 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 中将整数转换为位字符串?