我正在尝试编写SQL代码(使用SQL Developer),检查过去6个月保险期限内是否有生日。检查生日是否在跨越年度休假的6个月跨度
这就是我的代码目前的样子。
SELECT DRIVER_KEY, CASE WHEN BDAY BETWEEN EFFDAY AND EXPDAY THEN 1 ELSE 0 END AS BDAYIND FROM (
SELECT DISTINCT A.DRIVER_KEY
, TO_CHAR(A.BIRTH_DATE,'mm/dd') AS BDAY
, TO_CHAR(SUBSTR(A.EFFECTIVE_DATE_KEY,5,2)||'/'||SUBSTR(A.EFFECTIVE_DATE_KEY,7,2)) AS EFFDAY
, TO_CHAR(SUBSTR(A.EXPIRATION_DATE_KEY,5,2)||'/'||SUBSTR(A.EXPIRATION_DATE_KEY,7,2)) AS EXPDAY
FROM DRIVER_TABLE A
);
它的工作原理 - 只要该术语不会在一年中突破。但是,我的代码目前说01/25不在09/19和03/19之间......我该如何解决这个问题?
编辑您的问题并提供示例da ta和期望的结果。你的问题提到6个月的时间,但你的代码没有这样的东西。 –
为什么不使用完整日期'mm/dd/yyyy'来确定它是否在范围内? –
由于您正在转换为“CHAR”或“字符串”数据,因此“01”不在“09”和“03”之间。 –