날짜 기간을 설정하여 데이터를 조회할때가 있습니다.
이때 기간의 최대일자를 제한하고 싶다면 아래와 같이 사용하실 수 있습니다.
사용한 주요 기능
- requestSubmitFn
- blocks.id
- blocks.hidden
- defaultValueFn
- resetButton
예제 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;
이외에 참고하실만한 자료 함께 공유드립니다.
관련하여 도움이 필요하시면 문의주세요.
감사합니다.