提问人:Zaahid Munshi 提问时间:11/15/2023 最后编辑:marc_sZaahid Munshi 更新时间:11/15/2023 访问量:35
如何筛选“INT”格式的日期列
How to filter a date column that is in "INT" format
问:
我有一个表格,日期列的格式为 INT。我需要两个单独的查询。第一个查询需要从当年开始到当天提取数据,第二个查询需要从上一年到上一年的相应日期提取数据。"yyyy/MM/dd"
例如:
Query1 = (01 January 2023 to 15 November 2023)
Query2 = (01 January 2022 to 15 November 2022)
我试过了
date_parse(cast(tbl_dt as varchar), '%Y%m%d') > date(current_date) - interval '365' day
但这需要最后的 365 天。
我也尝试了 where ,但这基本上是硬编码的,我需要每年更改查询。tbl_dt> 20230101
答:
2赞
Fenton
11/15/2023
#1
您可以通过转换为日期格式(即 yyyyMMdd)将筛选日期转换为 INT。112
SELECT CAST(CONVERT(varchar(8), GETDATE(), 112) AS INT)
这将为您提供:
20231115
因此,您可以生成要过滤的 INT,而不是将每个 INT 转换为日期来过滤它们。
从长远来看...您可能希望添加一个具有日期类型的新列,然后开始填充它/将 INT 数据迁移到其中。这为您提供了一条远离 INT 的途径,而无需立即立即停止使用它们。
若要在查询中使用此转换,子句将为:WHERE
WHERE
tbl_dt > CAST(CONVERT(varchar(8), @fromDate, 112) AS INT)
AND
tbl_dt < CAST(CONVERT(varchar(8), @toDate, 112) AS INT)
这不包括两个日期,不包括在内。
评论
int
yyyyMMdd