【问题标题】:Check invalid date in Amazon Redshift检查 Amazon Redshift 中的无效日期
【发布时间】:2019-10-10 15:02:57
【问题描述】:

我正在处理 Amazon Redshift。

我有一个YYYYMMDD 格式的日期列。我需要编写一个查询来检查无效日期:

  1. 每个月都应该有适当的日子,例如:如果六月的日期部分为 31,则返回该列。
  2. 如果日期为非闰年的 2 月 29 日,则返回该列

【问题讨论】:

  • 您不能在date 列中存储无效日期
  • 除非你使用mysql :)
  • 该列的数据类型是什么?

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


【解决方案1】:

没有“YYYYMMDD 格式的日期列”之类的东西——在红移日期列中,没有格式的 DATE、TIMESTAMP 或 TIMESTAMPTZ 数据类型;在内部,它是一个时间点的数字表示,您的查询工具或前端应用程序会根据显示它的所需文化/区域或基于用户表达的语言等对其进行格式化

你所拥有的是一个字符串或整数列,其中包含一些看起来像日期的数字,如果你知道前 4 位数字代表年份......等等

现在你在问如何确保这个“看起来可能代表日期的东西”是一个有效的日期?

在列上使用正确的 DATE/TIME/TIMESTAMPTZ 数据类型。你也可以用它做数学运算,不会有任何无效值,它也可以做基于时区的操作,无论什么文化,它都会正确排序,没有人会看到“20121211”并认为它是“1211 年 12 月 20 日”。或者可能是 2012 年 12 月 11 日。或者可能是 2012 年 11 月 12 日。或者......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-26
    • 2016-07-29
    • 1970-01-01
    相关资源
    最近更新 更多