프로그래밍

[Sqlite] 월을 이름으로 표현하기 1 -> Jan, 2-> Feb

*%$@$#@ 2023. 1. 12. 10:59
728x90
반응형

일부 데이터베이스 프로그램에서 지원하는 함수 중에 to_char라는 함수가 있습니다. 이 함수를 사용하게 되면 숫자로 표시된 월을 이름으로 표현할 수 있습니다. 예를 들어
to_char('2019-01-01', 'Month')라고 표현하면 January라고 출력이 되는 것이죠.

아쉽게도 Sqlite는 to_char의 기능이 없습니다. 하지만 다음과 같이 동일한 효과를 구현할 수는 있습니다.

substr('JanFebMarAprMayJunJulAugSepOctNovDec', 1 + 3 * (strftime('%m', '2019-01-01') - 1 ), 3)

substr은 문자열중에서 중간의 일부 문자열을 추출할 때 사용하는 함수입니다. 세 개의 인자를 전달받는데 차례대로 '대상문자열', '문자시작위치', '추출문자개수'입니다.

추출할 대상 문자열은 각 월의 이름은 3자리씩 나타내었습니다. 날짜정보에서 월에 해당하는 숫자값을 추출한 뒤 3을 곱하면 우리가 원하는 위치의 문자 시작위치를 얻을 수 있게 되는 원리입니다.

가운데 사용한 strftime 함수는 날짜정보에서 월 정보만을 나타내도록 텍스트 포맷을 지정하는 함수입니다. 위와 같이 '%m'으로 설정해 주면 날짜 정보 중 월 정보만을 추출하게 됩니다.

그래서 '2019-01-01'에서 추출한 월 정보는 '01'이 되고 이 값에서 1을 뺀 결과 0에 3을 곱하고 마지막에 1을 더하면 결과가 1이 됩니다. 즉 Jan를 추출하기 위해서 문자시작위치 1을 반환하는 것이죠. 1부터 3개의 문자를 추출하면 Jan이라는 문자열을 리턴 받을 수 있습니다.


728x90
반응형