by 달콤꼬야 [2018.02.23 16:59:13]
날짜 두개를 비교해서 1년 이상이면 Y, 아니면 N으로 표시하려고 하는데 최대한 ANSI 표준에 맞게 짜려고 합니다.
지금은 CASE WHEN TO_DATE(FM.DT_END) - (TO_DATE(FM.DT_ENTRY)+(INTERVAL '1' YEAR)) >= 0 THEN 'Y' ELSE 'N' END AS YN_TARGET
이렿게 짰구요ㅠㅠㅠ
MSSQL이나 기타 DB에서 돌아갈수 있도록 바꿀 수 있을까요?
DATE 함수가 MS-SQL 이랑 오라클이랑 상이합니다.
DATE TYPE이 아니라 CHAR 타입이시면 TEXT형태로 비교해야할것 같은데요.
그런데 SUBSTR도 함수가 틀리네요. SUBSTR->SUBSTRING
답변 감사드려요ㅎㅎ
SELECT dt_entry , dt_end , CASE WHEN CAST(dt_entry AS DATE) + INTERVAL '1' YEAR <= CAST(dt_end AS DATE) THEN 'Y' ELSE 'N' END AS yn_target FROM fm ;
Oracle, PostgreSQL, MariaDB 에서 정상 동작 확인 했습니다. MSSQL 에서는 Interval 이 안먹네요. MSSQL : DATEADD(year, 1, CAST(dt_entry AS DATE))
아.. CAST 가 있었군요...
답변 정말 감사합니다!!ㅠㅠ