hive 如何过滤“INT”格式的日期列

uqzxnwby  于 2023-11-18  发布在  Hive
关注(0)|答案(1)|浏览(180)

我有一个表,日期列是INT格式为"yyyy/MM/dd"。我需要有两个单独的查询。第一个需要从今年年初到当天拉数据,第二个查询需要从上一年拉数据到上一年的相应日期。
例如

  1. Query1 = (01 January 2023 to 15 November 2023)
  2. Query2 = (01 January 2022 to 15 November 2022)

字符串
我试

  1. date_parse(cast(tbl_dt as varchar), '%Y%m%d') > date(current_date) - interval '365' day


但这需要过去的365天
我还尝试了where tbl_dt> 20230101,但这基本上是硬编码的,我需要每年更改查询。

cetgtptt

cetgtptt1#

您可以通过转换为112日期格式,即yyyyMMdd,将筛选日期转换为INT。

  1. SELECT CAST(CONVERT(varchar(8), GETDATE(), 112) AS INT)

字符串
这将为您提供给予:
20231115
因此,您可以生成INT来进行过滤,而不是将每个INT转换为日期来过滤它们。
从长远来看.
要在查询中使用此转换,WHERE子句应为:

  1. WHERE
  2. tbl_dt > CAST(CONVERT(varchar(8), @fromDate, 112) AS INT)
  3. AND
  4. tbl_dt < CAST(CONVERT(varchar(8), @toDate, 112) AS INT)


这是两个日期的 * 不包括 *,而不是 * 包括 *。

展开查看全部

相关问题