【问题标题】:HIVE select where date between, but its a string YYYYMMDD, not numeric date format?HIVE 选择日期之间的位置,但它是字符串 YYYYMMDD,而不是数字日期格式?
【发布时间】:2021-06-18 15:24:10
【问题描述】:

所以我正在努力学习如何处理这个问题。

键分区列是字符串形式的“日期”(YYYYMMDD)。

所以它是一个字符串,而不是数字日期格式。

我无法理解如何在 WHERE 中按正常日期范围过滤掉这个,例如

其中日期 > CURRENT_DATE -30

“20210512”和“20210517”之间的日期

这是如何工作的?是否应该先转换日期列?

这是 HIVE 数据库中的 SQL。

【问题讨论】:

  • 标记你正在使用的数据库
  • 您必须将“日期”字段转换为日期类型。由于您没有告诉您使用的是哪个数据库,因此我无法帮助您使用正确的功能,因为每个 sql db 的功能都可能不同。
  • 对不起。这是 HIVE 数据库中的 SQL。

标签: sql date hive


【解决方案1】:

最好的方法是将比较日期转换为字符串。很多数据库支持to_char()

where date > to_char(current_date - 30, 'YYYYMMDD')

那些没有将日期转换为字符串的其他函数。

请注意,此公式允许使用索引和表分区来优化查询。

【讨论】:

  • 我将如何为“介于”搜索执行此操作?喜欢搜索特定的日期范围?
  • @surfer349 。 . .您的 between 版本应该可以正常工作。
  • 我试过了,但没有得到任何回报。我唯一可以开始工作的就是这种格式。其中日期>'20210610'
  • @surfer349 。 . .也许您在那个时间段内没有任何价值。
猜你喜欢
  • 2019-01-22
  • 1970-01-01
  • 2016-06-25
  • 2014-02-20
  • 1970-01-01
  • 1970-01-01
  • 2012-02-18
  • 2019-09-07
  • 1970-01-01
相关资源
最近更新 更多