【问题标题】:Filtering by using a varchar column in sql在 sql 中使用 varchar 列进行过滤
【发布时间】:2021-11-08 21:58:28
【问题描述】:

我有一个表,它有一个日期,但存储为 varchar 数据类型列:

my_date metric_name
2021-09-12 CLS
2021-09-12 FID

我想使用此列仅保留 30 天。

我尝试在where 子句中使用cast(my_date as date),但它不起作用。

你能帮忙吗?

我的代码是 ANSI SQL。

【问题讨论】:

  • datediff 不是 ANSI SQL 函数。
  • 将列数据类型更改为 date 而不是 varchar,生活会变得更轻松。
  • 用您正在使用的数据库标记您的问题。
  • 我正在使用 Amazon-Athena db。

标签: sql date where-clause amazon-athena datediff


【解决方案1】:

您应该能够将您的专栏转换为日期。这将建议如下语法:

where cast(my_date as date) >= current_date - interval '30' day

也就是说,日期/时间函数是非常特定于数据库的,因此确切的语法因数据库而异。

【讨论】:

  • 演员表(my_date as date)在 where 语句中根本不起作用。有其他方法吗?
  • @ChrissieM。我修正了一点答案,现在应该可以了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-24
  • 2015-11-11
  • 2021-07-08
相关资源
最近更新 更多