在Oracle SQL Developer中如何比较INTERVAL YEAR TO MONTH数据类型
你可以通过EXTRACT函数分别提取INTERVAL YEAR TO MONTH类型中的年、月数值,再按展示规则做字符串拼接即可,以下是Oracle语法实现(你用到的区间字面量写法符合Oracle规范):
SELECT Product_ID AS ProductID, CASE -- 匹配无质保边界情况 WHEN Warranty_Period = INTERVAL '0-0' YEAR TO MONTH THEN 'No warranty' ELSE TRIM( -- 拼接年部分,自动处理单复数 CASE WHEN EXTRACT(YEAR FROM Warranty_Period) > 0 THEN EXTRACT(YEAR FROM Warranty_Period) || ' year' || CASE WHEN EXTRACT(YEAR FROM Warranty_Period) > 1 THEN 's' ELSE '' END ELSE '' END -- 年月都存在时加连接词 || CASE WHEN EXTRACT(YEAR FROM Warranty_Period) > 0 AND EXTRACT(MONTH FROM Warranty_Period) > 0 THEN ' and ' ELSE '' END -- 拼接月部分,自动处理单复数 || CASE WHEN EXTRACT(MONTH FROM Warranty_Period) > 0 THEN EXTRACT(MONTH FROM Warranty_Period) || ' month' || CASE WHEN EXTRACT(MONTH FROM Warranty_Period) > 1 THEN 's' ELSE '' END ELSE '' END ) END AS "Warranty Left" FROM Product_Information;
如果你关联表后用了W作为该表的别名,将代码中所有字段前加上W.前缀即可适配你现有代码。上述代码已覆盖你给出的示例场景:
- 质保期为
INTERVAL '1-6' YEAR TO MONTH时,返回1 year and 6 months - 质保期为
INTERVAL '0-4' YEAR TO MONTH时,返回4 months
内容的提问来源于stack exchange,提问作者kikiriki
相关产品推荐
相关产品推荐

