[jsp]sql과 jstl를 활용해 현재 날짜와 시작일 마감일 비교하기

sql을 활용해 비교하기

SELECT *,CASE WHEN(START_DATE < now() and END_DATE >  now()) THEN 'Y' ELSE 'N' END as 원하는 필드명
FROM 테이블명

sql를 이용하는 경우 case when 조건문을 활용해 원하는 필드명으로 값을 받아온 후 처리해  줄수 있다.
 

<c:choose>
    <c:when test="${원하는 필드명 eq 'Y'}">
       <span style="color: red;">(진행중)</span>
    </c:when>
    <c:otherwise>
       <span style="color: red;">(접수완료)</span>
    </c:otherwise>
</c:choose>

 

jstl을 이용해 비교하기

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>

jstl을 이용하려면 페이지 상단에 jstl 태그 라이브러리를 기입해줘야 한다.
 

<jsp:useBean id="now" class="java.util.Date" />
<fmt:formatDate value="${now}" pattern="yyyyMMddHHmm" var="nowDate"/>
<fmt:formatDate value="${list.start_date}" pattern="yyyyMMddHHmm" var="startDate"/>
<fmt:formatDate value="${list.end_date}" pattern="yyyyMMddHHmm" var="endDate"/>

java util  클래스의 데이트를 활용해 현재 시간을 구한다.
날짜 비교를 하려면 패턴을 맞춰줘야 하는데 <fmt:formatDate>를 이용하면 날짜 정보를 담고 있는 객체를 포맷팅해 원하는 형식으로 출력할수 있다.

 

속성 표현식/EL 타입 설명
value 사용가능 java.util.Date 포맷팅할 날짜 및 시간 값
type 사용가능 String 날짜, 시간 또는 둘 다 포맷팅 할지의 여부를 지정한다.
time, date, both중 한 가지 값을 가질 수 있으며, 기본값은 date이다.
dateStyle 사용가능 String 날짜에 대해 미리 정의된 포맷팅 스타일을 지정한다.
default, short, medium, long, full 중 한가지 값을 가질 수 있으며, 기본값은 default이다
timeStyle 사용가능 String 시간에 대해 미리 정의된 포맷팅 스타일을 지정한다.
default, short, medium, long, full 중 한가지 값을 가질 수 있으며, 기본값은 default이다.
pattern 사용가능 boolean 직접 파싱할 때 사용할 양식을 지정한다.
java.text.DateFormat에 있는 양식을 사용한다.
timeZone 사용가능 String또는
java.util.Locale
시간대를 변경하고 싶을 때 사용한다.
<fmt:setTimeZone>태그에서 생성한 TimeZone객체를 사용한다.
var 사용불가 String 파싱한 결과를 저장할 변수 명을 지정.
scope 사용불가 String 변수를 저장할 영역을 지정한다. 기본값은 page.

 

 

 

 

<fmt:parseDate value="202001010000" pattern="yyyyMMddHHmm" var="startDate">
<fmt:parseDate value="202001010000" pattern="yyyyMMddHHmm" var="endDate">

문자열을 Date 타입으로 변경하려면 <fmt:parseDate>을 이용한다.

 

속성 표현식/EL 타입 설명
value 사용가능 java.util.Date 파싱할 문자열
type 사용가능 String 날짜, 시간 또는 둘 다 포맷팅 할지의 여부를 지정한다.
time, date, both중 한 가지 값을 가질 수 있으며, 기본값은 date이다.
dateStyle 사용가능 String 날짜에 대해 미리 정의된 포맷팅 스타일을 지정한다.
default, short, medium, long, full 중 한가지 값을 가질 수 있으며, 기본값은 default이다
timeStyle 사용가능 String 시간에 대해 미리 정의된 포맷팅 스타일을 지정한다.
default, short, medium, long, full 중 한가지 값을 가질 수 있으며, 기본값은 default이다.
pattern 사용가능 boolean 직접 파싱할 때 사용할 양식을 지정한다.
java.text.DateFormat에 있는 양식을 사용한다.
timeZone 사용가능 String또는
java.util.Locale
시간대를 변경하고 싶을 때 사용한다.
<fmt:setTimeZone>태그에서 생성한 TimeZone객체를 사용한다.
parseLocale 사용가능 String또는
java.util.Locale
파싱한 결과를 저장할 변수 명을 지정.
var 사용불가 String 파싱한 결과를 저장할 변수 명을 지정.
scope 사용불가 String
변수를 저장할 영역을 지정한다. 기본값은 page.

 

 

<c:choose>
    <c:when test="${startDate < nowDate && endDate > nowDate}">
       <span style="color: red;">(진행중)</span>
    </c:when>
    <c:otherwise>
       <span style="color: red;">(접수완료)</span>
    </c:otherwise>
</c:choose>

 
마지막으로 현재시간과 비교하려는 날짜를 비교한 후 조건에 따라 처리해 준다.