Teradata中WHERE子句日期格式适配:查询近15天数据方法
在Teradata中基于MM/DD/YYYY格式的日期列查询近15天数据
你的问题核心是日期列存储为字符串类型(格式为MM/DD/YYYY),直接与Teradata原生DATE类型的CURRENT_DATE比较时,无法被正确解析,导致无匹配结果。需要先将字符串转换为DATE类型再进行范围筛选。
正确查询语句
SELECT * FROM table_A WHERE TO_DATE(date, 'MM/DD/YYYY') BETWEEN (CURRENT_DATE - INTERVAL '15' DAY) AND CURRENT_DATE;
关键说明
TO_DATE(date, 'MM/DD/YYYY'):将字符串类型的日期列按照月/日/年的格式转换为Teradata原生DATE类型,确保可以和CURRENT_DATE进行正确的日期比较。CURRENT_DATE - INTERVAL '15' DAY:计算当前日期往前推15天的起始日期,替换你原语句中的30天即可匹配需求。
备选写法
如果你的Teradata版本支持,也可以用更简洁的日期加减写法:
SELECT * FROM table_A WHERE TO_DATE(date, 'MM/DD/YYYY') >= CURRENT_DATE - 15 AND TO_DATE(date, 'MM/DD/YYYY') <= CURRENT_DATE;
注意事项
如果日期列存在格式无效的字符串(比如13/32/2022),TO_DATE会抛出错误。此时可以使用TRYCAST函数兼容无效值(转换失败会返回NULL,不会中断查询):
SELECT * FROM table_A WHERE TRYCAST(date AS DATE FORMAT 'MM/DD/YYYY') BETWEEN (CURRENT_DATE - INTERVAL '15' DAY) AND CURRENT_DATE;
内容的提问来源于stack exchange,提问作者Akshay Shinde
相关产品推荐
相关产品推荐

