DATABASE/ORACLE

게시일 현재날짜 비교

publepuble 2019. 1. 21. 11:00

보통 관리자 페이지에서 게시일을 등록하는 기능이 많이 들어가있다. 게시일을 등록하는것은 DateTimePicker를 주로써서 게시일을 등록하는데 문제는 관리자에서 등록한뒤에 프론트단에서 현재날짜와 비교해서 가져올때에 있다.


BULLETIN_DAY를 게시일의 컬럼명이고 데이터형도 DATE이다.  오라클에서 현재날짜는 SYSDATE 이다. 그리고 게시일과 현재날짜를 비교해주는 쿼리는


SELECT * FROM TABLE_NAME WHERE 1=1 AND BULLETIN_DAY <= SYSDATE


현재 관리자가 게시물을 2019/01/21 11:30:42 에 올리게 되면 대부분은 19/01/21 정각부터 게시물이 보여진다고 생각한다. 하지만 현재쿼리는 현재날짜가 2019/01/21 11:30:42 에 게시물이 보여지고 그전에는 게시물이 나오지 않는다. 


즉, 게시일을 2019/01/21 00:00:00 로 바꿔서 가져오는 방법과 SYSDATE를 2019/01/21 23:59:59로 만들어서 가져오는 처리를 해줘야한다.
 
1. 게시일의 시분초를 초기화하여 가져오기

TRUNC로 게시일의 시분초를 초기화

SELECT * FROM TABLE_NAME WHERE 1=1 AND TRUNC(BULLETIN_DAY) <= SYSDATE

2. 현재날짜의 시분초를 23:59:59로 변환해서 가져오기


현재날짜의 시분초를 TRUNC로 초기화 시켜주면 현재날짜의 시분초는 00:00:00이 되는데 거기에 0.99999 를더해주면 23:59:59 가 되어서 게시일을 언제올리던 현재날짜에 있는 데이터는 전부다 가져올 수 있다. 


 SELECT TRUNC(SYSDATE)+ 0.99999 FROM DUAL;



반응형