개발/DB6 [오라클] 입력 받은 날짜 입력 받은 날짜가 주말인지 평일인지 어떻게 알 수 있을까?입력 받은 날짜가 포함된 주의 월요일 날짜와 일요일 날짜는 어떻게 구 할 수 있을까? 입력 받은 날짜가 주말 확인하기SELECT CASE WHEN TO_CHAR(TO_DATE(I_STA_YMD, 'YYYYMMDD'), 'D') IN ('1','7') THEN 'Y' WHEN EXISTS(SELECT 1 FROM tbl T1 WHERE T1.C_CD = :I_C_CD AND T1.HOLI_CD = :I_STA_YMD) THEN 'Y' ELSE 'N' END FROM DUAL; 입력 받은 날짜가 들어간 주의 월요일 일요일 날짜 구하기SELECT :YMD , TO_CHAR(TRUNC(TO_DATE(:YMD.. 2025. 4. 1. [오라클] 특정 날짜가 들어 있는 주의 월요일 날짜와 일요일 날짜 구하기 오늘 조금 특별한 상황이 발생 하였다.어떤 날짜를 지정하면, 지정한 날짜가 포함된 주의 월요일 날짜와 일요일 날짜를 확인해야 하는 일이 생겼다.다행히 오라클에서 쉬운 방식으로 해당 날짜를 구할 수 있어서 방법을 정리해 본다. SELECT :YMD , TO_CHAR(TRUNC(TO_DATE(:YMD, 'YYYYMMDD'), 'IW'), 'YYYYMMDD') AS MONDAY_YMD , TO_CHAR(TRUNC(TO_DATE(:YMD, 'YYYYMMDD'), 'IW') +6, 'YYYYMMDD') AS MONDAY_YMD FROM DUAL;:YMD는 입력 받은 특정 날짜이다.이 날짜에가 들어 있는 주의 월요일과 일요일 날짜를 구하려고 하는 것이다.IW는 ISO Week의 약자로 월요일의 날짜.. 2025. 3. 26. [DB]오라클 개발 - 운영 서버 비교하기 드디어 프로젝트 막바지이다.시스템 오픈한지 약 한달이 지났고, 거의 대부분의 버그도 처리 하였다.그래서 이제 운영DB의 데이터를 개발DB로 옮겨 현재 운영에서 발생하는 문제에 대해 대응할 방법을 찾을때이다.약 시스템 오픈 후 약 한 달 동안 개발과 운영이 따로 놀다 보니 운영에서 발견되는 문제점이 개발에서 재현되지 않는 경우들이 종종 발생하기 시작했다. 주기적으로 운영 데이터를 개발서버에 반영해 주면 좋겠지만 현실은 그렇지 못하다.하지만 오늘 어렵게 그 기회를 잡았다.그래서 이번에 운영 개발 서버간 DB를 비교해 보는 방법을 간단히 정리해본다. 사용한 툴은 Toad 12버전이다.상당히 오래된 버전이지만... 나름 쓸만하다... 1. 상단 메뉴에서 'Database -> Compare -> Schemas.. 2025. 3. 12. [DB] 한 컬럼에 여러개의 결과 표현하기 쿼리 결과가 여러 줄인 데이터가 있다. 그런데 그중 한 컬럼의 내용반 다르고, 다른 컬럼의 결과는 똑같다. 그래서 내용이 다른 그 한 컬럼의 내용을 한 번에 받고 싶다. 이럴때 사용 할 수 있는 방법이 - oracle : LISTAGG(컬럼명 구분자) - mysql : GROUP_CONCAT(컬럼명 SEPARATOR 구분자) 함수를 이용하는 것이다. 두 함수 모두 지정 가능한 문자, 기호 등을 구분자로 하여 여려 행의 내용을 한 컬럼에 표기해 준다. oracle SELECT USER_ID, LISTAGG(USER_TASK, ',') WITHIN GROUP (ORDER BY USER_ID) AS USER_TASK FROM USER_TASK WHERE .... GROUP BY USER_ID 묶어야할 대상은 .. 2021. 7. 28. [DB] WITH AS 문 사용하기 쿼리를 작성할때 과도한 서브 쿼리는 메인 쿼리의 더욱 복작하게 만든다. 이럴때 WITH AS 구문을 사용하면 그나마 복잡한 부분의 쿼리를 분리해 낼 수 있을 뿐만 아니라 반복적으로 쓰이는 서브 쿼리라면 성능의 향상을 덤으로 얻을 수 있다. 방법은 간단하다. 메인 쿼리 위에 WITH AS 구문을 사용해 서브 쿼리를 옮겨 놓는 것이다. WITH 이름 AS ( SELECT ... FROM ... WHERE ... ) SELECT .... FROM 이름 WHERE .... 서브쿼리가 여러개라 하더라도 걱정할 필요 없다. 각 서브쿼리를 , 로 구분하여 추가해 주면 된다. WITH 이름1 AS ( SELECT 문 ), 이름2 AS ( SELECT 문 ) SELECT ... FROM 이름1 LEFT OUTER JOI.. 2021. 7. 28. DB2 에러 정리 SQLCODE : 104 SQLSTATE : 42601 문법이 올바르지 않을 경우 발생 SQLCODE : 204 SQLSTATE: 42704 테이블이 없을때 SQLCODE : 206 SQLSTATE : 42703 컬럼이 존재하지 않을때 SQLCODE : 302 SQLSTATE : 22001 컬럼 사이즈가 문자열의 길이 보다 작을때... SELECT 에서 발생하는 경우가 있다. 특히 ORDER BY 를 조회 할때 페이지 사이즈가 작기 때문에 발생하는 경우가 있는데 (ORDER BY를 생략해 주면 에러가 안난다.) 이럴때 페이즈 사이즈를 늘려 주거나, 읽어 오는 데이터의 길이를 제한해야 한다. SQLCODE : 405 SQLSTATE : 42820 숫자 상수가 너무 길거나, 그 값이 해당 데이터 유형의 범위.. 2021. 4. 16. 이전 1 다음