SELECT MIN(CASE WHEN A.DOW = 1 THEN A.LEVEL END ) AS SUN
, MIN(CASE WHEN A.DOW = 2 THEN A.LEVEL END ) AS MON
, MIN(CASE WHEN A.DOW = 3 THEN A.LEVEL END ) AS TUE
, MIN(CASE WHEN A.DOW = 4 THEN A.LEVEL END ) AS WED
, MIN(CASE WHEN A.DOW = 5 THEN A.LEVEL END ) AS THU
, MIN(CASE WHEN A.DOW = 6 THEN A.LEVEL END ) AS FRI
, MIN(CASE WHEN A.DOW = 7 THEN A.LEVEL END ) AS SAT
FROM (
WITH RECURSIVE CALENDAR AS (
SELECT 1 AS LEVEL,
       DAYOFWEEK(CONCAT('2023-04','-01')) AS DOW,
       WEEK(CONCAT('2023-04','-01')) AS WOY

UNION ALL

SELECT CALENDAR.LEVEL +1,
   DAYOFWEEK(CONCAT('2023-04','-',CALENDAR.LEVEL+1 )),
   WEEK(CONCAT('2023-04','-',CALENDAR.LEVEL+1))
  FROM CALENDAR
     WHERE CALENDAR.LEVEL < DAY(LAST_DAY(CONCAT('2023-04','-01')))
   )
SELECT * FROM CALENDAR
 )A
    GROUP BY A.WOY
ORDER BY A.WOY

;

 

'2023-04' 부분이 파라미터 #{param} 자리

==========================================결과

2023-04월 달력 쿼리 조회 결과

 

+ jsp에서 보여줄때

 

<div class="calendar">

<table>

<caption>일정 달력 - 날짜별 일정 확인 달력</caption>

<colgroup>

<col style="width:14.28%;" />

<col style="width:14.28%;" />

<col style="width:14.28%;" />

<col style="width:14.28%;" />

<col style="width:14.28%;" />

<col style="width:14.28%;" />

<col style="width:14.28%;" />

</colgroup>

<thead>

<tr>

<th scope="col"></th>

<th scope="col"></th>

<th scope="col"></th>

<th scope="col"></th>

<th scope="col"></th>

<th scope="col"></th>

<th scope="col"></th>

</tr>

</thead>

<tbody>

<c:set value="${today}" var="today" />

<c:forEach var="result" items="${schedul}" varStatus="status">

<tr>

<fmt:formatNumber var="sun" minIntegerDigits="2" type="number" value="${result.sun}"/>

<c:set value="${year}${month}${sun}" var="dt" />

<td onclick="fn_open_schedule_add('<c:out value="${dt}" />');" <c:if test="${dt eq today}">class="sc_today"</c:if>>

<div class="cont" >

<span class="num" ><c:out value="${result.sun}"/></span>

<ul>

<c:forEach var="list" items="${schedulList}" varStatus="status">

<c:if test="${dt eq list.schdulBgnde}">

<li>

<a href="#" onclick="fn_open_shedule_Detail(<c:out value="${list.schdulSn}"/>)" >

<c:if test="${null ne list.schdulNm}"><p class="arrow_box"><c:out value="${list.schdulNm}"/></p></c:if>

<c:out value="${list.userNm}"/>

<c:out value="${list.schdulBeginTm}"/>-<c:out value="${list.schdulEndTm}"/>&nbsp;<c:out value="${list.schdulNm}"/>

</a>

</li>

</c:if>

</c:forEach>

</ul>

</div>

</td>

<fmt:formatNumber var="mon" minIntegerDigits="2" type="number" value="${result.mon}"/>

<c:set value="${year}${month}${mon}" var="dt" />

<td onclick="fn_open_schedule_add('<c:out value="${dt}" />');" <c:if test="${dt eq today}">class="sc_today"</c:if>>

<div class="cont">

<span class="num" ><c:out value="${result.mon}"/></span>

<ul>

<c:forEach var="list" items="${schedulList}" varStatus="status">

<c:if test="${dt eq list.schdulBgnde}">

<li>

<a href="#" onclick="fn_open_shedule_Detail(<c:out value="${list.schdulSn}"/>)" >

<c:if test="${null ne list.schdulNm}"><p class="arrow_box"><c:out value="${list.schdulNm}"/></p></c:if>

<c:out value="${list.userNm}"/>

<c:out value="${list.schdulBeginTm}"/>-<c:out value="${list.schdulEndTm}"/>&nbsp;<c:out value="${list.schdulNm}"/>

</a>

</li>

</c:if>

</c:forEach>

</ul>

</div>

</td>

<fmt:formatNumber var="tue" minIntegerDigits="2" type="number" value="${result.tue}"/>

<c:set value="${year}${month}${tue}" var="dt" />

<td onclick="fn_open_schedule_add('<c:out value="${dt}" />');" <c:if test="${dt eq today}">class="sc_today"</c:if>>

<div class="cont">

<span class="num"><c:out value="${result.tue}"/></span>

<ul>

<c:forEach var="list" items="${schedulList}" varStatus="status">

<c:if test="${dt eq list.schdulBgnde}">

<li>

<a href="#" onclick="fn_open_shedule_Detail(<c:out value="${list.schdulSn}"/>)" >

<c:if test="${null ne list.schdulNm}"><p class="arrow_box"><c:out value="${list.schdulNm}"/></p></c:if>

<c:out value="${list.userNm}"/>

<c:out value="${list.schdulBeginTm}"/>-<c:out value="${list.schdulEndTm}"/>&nbsp;<c:out value="${list.schdulNm}"/>

</a>

</li>

</c:if>

</c:forEach>

</ul>

</div>

</td>

<fmt:formatNumber var="wed" minIntegerDigits="2" type="number" value="${result.wed}"/>

<c:set value="${year}${month}${wed}" var="dt" />

<td onclick="fn_open_schedule_add('<c:out value="${dt}" />');" <c:if test="${dt eq today}">class="sc_today"</c:if>>

<div class="cont">

<span class="num" ><c:out value="${result.wed}"/></span>

<ul>

<c:forEach var="list" items="${schedulList}" varStatus="status">

<c:if test="${dt eq list.schdulBgnde}">

<li>

<a href="#" onclick="fn_open_shedule_Detail(<c:out value="${list.schdulSn}"/>)" >

<c:if test="${null ne list.schdulNm}"><p class="arrow_box"><c:out value="${list.schdulNm}"/></p></c:if>

<c:out value="${list.userNm}"/>

<c:out value="${list.schdulBeginTm}"/>-<c:out value="${list.schdulEndTm}"/>&nbsp;<c:out value="${list.schdulNm}"/>

</a>

</li>

</c:if>

</c:forEach>

</ul>

</div>

</td>

<fmt:formatNumber var="thu" minIntegerDigits="2" type="number" value="${result.thu}"/>

<c:set value="${year}${month}${thu}" var="dt" />

<td onclick="fn_open_schedule_add('<c:out value="${dt}" />');" <c:if test="${dt eq today}">class="sc_today"</c:if>>

<div class="cont">

<span class="num"><c:out value="${result.thu}"/></span>

<ul>

<c:forEach var="list" items="${schedulList}" varStatus="status">

<c:if test="${dt eq list.schdulBgnde}">

<li>

<a href="#" onclick="fn_open_shedule_Detail(<c:out value="${list.schdulSn}"/>)" >

<c:if test="${null ne list.schdulNm}"><p class="arrow_box"><c:out value="${list.schdulNm}"/></p></c:if>

<c:out value="${list.userNm}"/>

<c:out value="${list.schdulBeginTm}"/>-<c:out value="${list.schdulEndTm}"/>&nbsp;<c:out value="${list.schdulNm}"/>

</a>

</li>

</c:if>

</c:forEach>

</ul>

</div>

</td>

<fmt:formatNumber var="fri" minIntegerDigits="2" type="number" value="${result.fri}"/>

<c:set value="${year}${month}${fri}" var="dt" />

<td onclick="fn_open_schedule_add('<c:out value="${dt}" />');" <c:if test="${dt eq today}">class="sc_today"</c:if>>

<div class="cont">

<span class="num" ><c:out value="${result.fri}"/></span>

<ul>

<c:forEach var="list" items="${schedulList}" varStatus="status">

<c:if test="${dt eq list.schdulBgnde}">

<li>

<a href="#" onclick="fn_open_shedule_Detail(<c:out value="${list.schdulSn}"/>)" >

<c:if test="${null ne list.schdulNm}"><p class="arrow_box"><c:out value="${list.schdulNm}"/></p></c:if>

<c:out value="${list.userNm}"/>

<c:out value="${list.schdulBeginTm}"/>-<c:out value="${list.schdulEndTm}"/>&nbsp;<c:out value="${list.schdulNm}"/>

</a>

</li>

</c:if>

</c:forEach>

</ul>

</div>

</td>

<fmt:formatNumber var="sat" minIntegerDigits="2" type="number" value="${result.sat}"/>

<c:set value="${year}${month}${sat}" var="dt" />

<td onclick="fn_open_schedule_add('<c:out value="${dt}" />');" <c:if test="${dt eq today}">class="sc_today"</c:if>>

<div class="cont">

<span class="num" ><c:out value="${result.sat}"/></span>

<ul>

<c:forEach var="list" items="${schedulList}" varStatus="status">

<c:if test="${dt eq list.schdulBgnde}">

<li>

<a href="#" onclick="fn_open_shedule_Detail(<c:out value="${list.schdulSn}"/>)" >

<c:if test="${null ne list.schdulNm}"><p class="arrow_box"><c:out value="${list.schdulNm}"/></p></c:if>

<c:out value="${list.userNm}"/>

<c:out value="${list.schdulBeginTm}"/>-<c:out value="${list.schdulEndTm}"/>&nbsp;<c:out value="${list.schdulNm}"/>

</a>

</li>

</c:if>

</c:forEach>

</ul>

</div>

</td>

</tr>

</c:forEach>

</tbody>

</table>

</div>

+ Recent posts