【问题标题】:Unable to convert timestamp to date in Amazon Redshift无法在 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)?

标签: sql amazon-web-services amazon-redshift


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2017-11-11
    • 2018-12-19
    • 1970-01-01
    • 2021-01-07
    • 2016-11-26
    • 2015-06-18
    • 1970-01-01
    • 2020-10-19
    • 1970-01-01
    相关资源
    最近更新 更多