개발_끄적임
DB에서 한 주의 시작은 월요일이다
malmijalls
2022. 11. 13. 17:09
일요일 아침, 회사 메신저를 보니 운영중인 서비스에서 날짜와 관련한 오류가 일어나고 있다고 연락이 왔다.
내가 개발/수정을 했던 부분이라 원인 분석을 하고 있었는데, 죄송하고 감사하게도 다른 개발자분이 수정을 해 주셨다..
우선 해당 오류의 원인은 이렇다.
오라클의 TRUNC함수를 이용해 한 주의 시작일을 구해오는 함수가 있는데
SELECT TRUNC(SYSDATE, 'iw') AS 해당_주_월요일 FROM DUAL;
이 쿼리문은 현재 시간을 기준으로 해당하는 날짜 주의 시작일인 월요일 일자를 출력한다.
만약 현재 시간(날짜)가 2022년 11월 10일이라면 11월 7일을 출력하는 것이다.
오라클 DB(뿐 아니라 다른 DB도)에서 한 주의 시작은 월요일이고, 끝은 일요일이다.
또한 ISO8601기준으로도 월요일이 시작이며
유럽, 남미 국가들과 일부 아시아 국가들도 한 주의 시작을 월요일로 사용하고 있다고 한다.
이 사실을 잘 알지 못한채로, 탁상 위 달력을 기준으로
한 주의 시작 = 일요일
한 주의 끝 = 토요일
이라고 생각하여 개발을 하였고, 매주 일요일마다 에러가 발생하는 상황이 생긴 것..
큰 사고는 아니었지만, 유의해서 개발해야겠다.