자바스크립트 – 날짜 계산하기

날짜 관련 함수가 많이 필요한데, 이것도 참…아래 그림처럼 많은 옵션이 있을 수 있다.

한주뒤, 한주전,

한달뒤, 한달전

이번달, 올해 첫날 등등등 계산한 코드 일단 적어둠. 저장용

![](assets/images/2023/03/image-2.png?resize=980%2C207&ssl=1)
function search_date_to_str(future) {
    return future.getFullYear() + '-' + ((future.getMonth() + 1) < 10 ? '0' : '') + (future.getMonth() + 1) + '-' + (future.getDate() < 10 ? '0' : '') + future.getDate();
}

    var today = new Date(); // get today date
    // var today = new Date('2022/12/27/18:30');
    var today_string = search_date_to_str(today);
    var y = today.getFullYear();
    var m = today.getMonth();
    var thismonth_start_string = search_date_to_str(new Date(y, m, 1));
    var thismonth_end_string = search_date_to_str(new Date(y, m + 1, 0));
    var thisyear_string = search_date_to_str(new Date(y, 0, 1));

    var nextweek = new Date()
    nextweek.setDate(nextweek.getDate() + 7)
    var nextweek_string = search_date_to_str(nextweek);
    var prevweek = new Date()
    prevweek.setDate(prevweek.getDate() - 7)
    var prevweek_string = search_date_to_str(prevweek);
    var future = new Date();
    future.setMonth(future.getMonth() - 1);
    y = future.getFullYear();
    m = future.getMonth();
    var prevmonth_start_string = search_date_to_str(new Date(y, m, 1));
    var prevmonth_end_string = search_date_to_str(new Date(y, m + 1, 0));
    var future1 = new Date();
    future1.setMonth(future1.getMonth() + 1);
    y = future1.getFullYear();
    m = future1.getMonth();
    var nextmonth_start_string = search_date_to_str(new Date(y, m, 1));
    var nextmonth_end_string = search_date_to_str(new Date(y, m + 1, 0));

참고 페이지

[JS] 📚 자바스크립트 Date 메소드 💯 총정리

HTML – CSS 체크박스 수직정렬 맞추기

왜인지 모르지만 체크박스가 수직 정렬이 잘 안맞아서 글자랑 비뚤삐뚤 하네.

일단 결론적으로 이렇게 맞추었다. CSS의 남발인지 모르지만

![](assets/images/2023/03/image-2.png?resize=980%2C207&ssl=1)
소스 코드라고 할껀 없지만, 일단 올려둔다.
<div class="row mb-1 text-nowrap">
    <div class="col-auto d-flex align-items-center">
        <label class="form-label text-primary">기간별 검색 | </label>
        <label class="form-label" for="s_date_field">기간조건</label>
        <div class="form-check form-check-inline m-0 p-0 d-flex align-items-center">
            <input class="form-check-input m-0" type="radio" name="s_do" id="dateRadios0_1" value="option0_1" >
            <label class="form-check-label m-0 mx-1" for="dateRadios0_1">올해</label>
        </div>
        <div class="form-check form-check-inline m-0 p-0 d-flex align-items-center">
            <input class="form-check-input m-0" type="radio" name="s_do" id="dateRadios0" value="option0" >
            <label class="form-check-label m-0 mx-1" for="dateRadios0">전체</label>
        </div>
        <div class="form-check form-check-inline m-0 p-0 d-flex align-items-center">
            <input class="form-check-input m-0" type="radio" name="s_do" id="dateRadios2" value="option2" >
            <label class="form-check-label m-0 mx-1" for="dateRadios2">오늘</label>
        </div>
        <div class="form-check form-check-inline m-0 p-0 d-flex align-items-center">
            <input class="form-check-input m-0" type="radio" name="s_do" id="dateRadios1" value="option1" >
            <label class="form-check-label m-0 mx-1" for="dateRadios1">-1주</label>
        </div>
        <div class="form-check form-check-inline m-0 p-0 d-flex align-items-center">
            <input class="form-check-input m-0" type="radio" name="s_do" id="dateRadios4" value="option4" >
            <label class="form-check-label m-0 mx-1" for="dateRadios4">전월</label>
        </div>
        <div class="form-check form-check-inline m-0 p-0 d-flex align-items-center">
            <input class="form-check-input m-0" type="radio" name="s_do" id="dateRadios5" value="option5" >
            <label class="form-check-label m-0 mx-1" for="dateRadios5">당월</label>
        </div>
        <div class="form-check form-check-inline m-0 ms-2 p-0 d-flex align-items-center">
            <input class="form-check-input m-0" type="radio" name="s_do" id="dateRadios7" value="option7" >
            <label class="form-check-label m-0 mx-1" for="dateRadios7">기간설정</label>
        </div>
        <input type="date" name="s_df" id="id_s_df" value="" class="form-control">
        <span> ~ </span>
        <input type="date" name="s_dt" id="id_s_dt" value="" class="form-control">
    </div>
</div>

d-flex align-items-center 이거의 남발일수 있지만

마진 이나 패팅을 0으로 만들고 억지로 끼워맞춘 느낌이지만 머 잘 보이면 되지

Django – prefetch_related, select_related 알아보기

쿼리 수를 줄이기 위해 Foreign Key 가 포함된 테이블, 모델에서는 join 을 써야 한다.

헷갈리는 거니깐, 정리해 둔 글을 보자.

[Django] 간단하게 알아보는 N+1 문제 해결! (select_related, prefetch_related)

prefetch_related와 select_related의 차이점은 prefetch_related는 select_related 처럼 조인을 하는게 아니라, 필터링을 한다는 점입니다. 즉, Post에서 id를 쭉 불러오고, 이를 tag에서 필터링한다는 점이 select_related와의 차이점 입니다. 다만, 여기서 tag에서 post_id로 필터링 하려면, tag와 tag_set이 조인된 테이블이 필요하기 때문에 조인이 일어납니다.

https://bio-info.tistory.com/174

for comment in Comment.objects.all().select_related("post"):
    print(comment.post.title)

post 라는 필드는 Post 라는 테이블을 Foreign key 로 Comment 오브젝트에 선언되어 있다.

용례만 알면 되지 🙂

암튼 HTML 템플릿에서 리스트 수 만큼 쿼리가 수행되던 것이 확 줄어 버리게 된다.

외부 키로 값을 가져오는 경우에는 반드시 select_related 를 선언해서 SQL 수를 줄이자!

![Woman showing board with inscription against bottles with pumps in eco shop](assets/images/2023/03/7263029.jpg?resize=1024%2C683&ssl=1)

참고사이트

[Django] 테이블(모델)의 JOIN(3) ; prefetch_related() – https://engineer-mole.tistory.com/147