[MyBatis] 날짜 데이터 제어하기

Yeoonnii·2022년 11월 16일
0

MyBatis

목록 보기
10/10

DB에 들어가는 날짜데이터가 현재시간과 맞지 않는경우
Interval을 이용하여 일자,시간,분,초 계산을 하여 원하는 시간으로 맞추어 출력이 가능하다

조회시TO_CHAR을 이용해 출력 Data 포맷을 원하는 형태로 변환하여 가져올수도 있다

문제점

서버에 그리니치 평균시(GMT)가 기본시간으로 지정되어 있어서,
한국 표준시(KST)로 표시하기 위해 GMT+09:00 로 변경해야 한다


해결

게시글 등록시 시간을 더하여 insert 해줘도 되는데
이미 저장된 데이터들이 있기 때문에 게시글 조회시 +09:00를 더해 출력해주었다

TO_CHAR(CURRENT_TIMESTAMP+ INTERVAL '9' HOUR, 'yyyy-mm-dd hh24:mi:ss')
TO_CHAR(기준시간 + INTERVAL '더해줄숫자' 시간, '원하는 출력 날짜 포맷')


테이블에서 regdate 컬럼 시간 기준으로 더해줄것이기 때문에
TO_CHAR(REGDATE + INTERVAL '9' HOUR, 'yyyy-mm-dd hh24:mi:ss')
위처럼 작성해주었다

boardMapper.xml

<select id="boardSelectMain" parameterType="map" resultType="com.example.dto.BoardMainDTO">
        SELECT *  FROM 
        (SELECT M.NICKNAME, R.LIKECOUNT, RR.REPLYCOUNT, B.BNO, B.CONTENT, B.HIT, TO_CHAR(B.REGDATE + INTERVAL '9' HOUR, 'yyyy-mm-dd') REGDATE , B.TITLE, B.USERID, ROW_NUMBER() OVER (ORDER BY ${type} B.REGDATE DESC) ROWN FROM
                (SELECT DISTINCT BNO
                FROM HASHTAGMAPPING HM
                        <if test="hno != null"> 
                                WHERE HM.HNO IN (
                                <foreach collection="hno" item="tmp" separator = ", ">
                                    #{tmp}
                                </foreach>
                                )
                        </if>
                        ORDER BY BNO DESC
                        ) BM
                INNER JOIN BOARD B ON BM.BNO = B.BNO
                INNER JOIN MEMBER M ON M.USERID = B.USERID
                INNER JOIN (SELECT BNO, COUNT(USERID) LIKECOUNT FROM LIKES GROUP BY BNO) R ON R.BNO = B.BNO
                INNER JOIN (SELECT BNO, COUNT(RNO) REPLYCOUNT FROM REPLY GROUP BY BNO) RR ON RR.BNO = B.BNO
                        WHERE (B.TITLE LIKE '%' || #{title} || '%' )
                        <!-- WHERE (B.TITLE LIKE '%' || #{title} || '%' OR B.CONTENT LIKE '%' || #{content} || '%') -->
        )
        WHERE ROWN BETWEEN #{page} AND #{page}+11 ORDER BY ROWN
        </select>

결과

GMT에 맞춰진 시간이

내가 원하는 시간 (KST)로 출력된다!


참고링크 - 데이터 타입 간 날짜 데이터 제어하기

0개의 댓글

관련 채용 정보