# 검색조건 날짜 이용시 기간 최대일자 제한

**URL:** <https://ask.selectfromuser.com/t/topic/290>\
**Category:** 사용 팁\
**Tags:** requestsubmitfn\
**Created:** [10월 16, 2024, 5:28오전 UTC](https://ask.selectfromuser.com/t/topic/290 "2024-10-16T05:28:11Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![hbkim](https://yyz2.discourse-cdn.com/flex032/user_avatar/ask.selectfromuser.com/hbkim/32/23_2.png) [@hbkim](https://ask.selectfromuser.com/u/hbkim)\
**Post date:** [10월 16, 2024, 5:28오전 UTC](https://ask.selectfromuser.com/t/topic/290/1 "2024-10-16T05:28:11Z")

</div>

날짜 기간을 설정하여 데이터를 조회할때가 있습니다.

이때 기간의 최대일자를 제한하고 싶다면 아래와 같이 사용하실 수 있습니다.

**사용한 주요 기능**

- requestSubmitFn
- blocks.id
- blocks.hidden
- defaultValueFn
- resetButton

**예제 YAML**

```yaml
menus:
- path: pages/apDTBK
  name: 기간 범위 초과시 조회 중지
pages:
- path: pages/apDTBK
  blocks:
    - type: query
      resource: mysql.qa
      id: query2
      sqlType: select
      sql: >
        SELECT :created_at1, :created_at2
      hidden: true
      params:
      - key: created_at1
        hidden: true
      - key: created_at2
        hidden: true      

    - type: query 
      resource: mysql.qa
      id: query1
      sqlType: select
      sql: >
        SELECT * FROM properties WHERE created_at >= :created_at1 and created_at < :created_at2
      params:
      - key: created_at1
        format: date
        defaultValueFn: |
          return moment().add(-14, 'days').format('YYYY-MM-DD')
      - key: created_at2
        format: date
        defaultValueFn: |
          return DateTime.now().toFormat('yyyy-MM-dd')
      resetButton: 
        label: 초기화
      requestSubmitFn: |
        // query2에서 받은 값을 가져옴
        const createdAt1 = new Date(query2.params.created_at1.value);
        const createdAt2 = new Date(query2.params.created_at2.value);

        // 날짜 차이를 계산 (밀리초 단위 -> 일 단위로 변환)
        const dateDiff = (createdAt2 - createdAt1) / (1000 * 60 * 60 * 24);

        // 180일 이상일 경우 에러 발생 및 쿼리 중지
        if (dateDiff > 180) {
          throw new Error('조회시 기간은 180일까지만 가능합니다.');
        }

        // query1 실행
        return true;

```

이외에 참고하실만한 자료 함께 공유드립니다.

- [format: date](https://docs.selectfromuser.com/reference#format-date-datetime-year-month-week)
- [requestFn, requestSubmitFn 예제](https://ask.selectfromuser.com/t/requestfn-requestsubmitfn/101)

관련하여 도움이 필요하시면 문의주세요.  
감사합니다.
