首页 > 解决方案 > 如何在sql中比较2个转换日期

问题描述

我试图在我的查询中排除在同一个月开始的两列之间的结果。例如,我需要排除与福利2 同月开始的福利1。benefit1_start_date 和 benefit2_start_date 的格式为:YYYYMMDD。

这是我到目前为止所拥有的:

where (benefit1_start_date = (to_char(sysdate, 'YYYYMM') || '0122')) <> 
(benefit2_start_date = (to_char(sysdate, 'YYYYMM') || '0122'));

如果有人能把我引向正确的方向,我将不胜感激!

标签: sql

解决方案


将您的数字日期转换为文本,然后比较年份和月份子字符串:

WHERE
    SUBSTR(TO_CHAR(benefits1_start_date), 1, 6) <> SUBSTR(TO_CHAR(benefits2_start_date), 1, 6)

请注意,将您的日期存储为这样的数字是非典型的,您可能需要考虑将它们存储为日期。如果您没有一天组件,您可以只使用第一个作为占位符。


推荐阅读