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')
위처럼 작성해주었다
<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)로 출력된다!