Q&A

  • 퀴리문으로 날짜 검색
예를 들어 Lend(테이블명)에 out_date(예약일자), end_date(예약만료일)이 있을경우 end_date(예약만료일)의 다음날까지는 예약을 할 수 없습니다.

퀴리문으로 두 날짜를 비교하여 예약이 되어 있는지 알려고 합니다.

out_date - end_date
-------------------------------------------
1. 2005년8월4일 - 2005년8월6

2. 2005년8월8일 - 2005년8월8

3. 2005년8월10일 - 2005년8월11일
-------------------------------------------

예약이 되어 있습니다. end_date(예약만료일)+1 에는 예약을 할수 없고요.

5, 7, 9, 12은 예약을 할수 없습니다. 예약 가능일은 13일부터 예약이 되겠죠.

사용자가 2005년 8월 9일부터 2005년 8월 15일까지 예약이 가능한지를 검색할려고 합니다.

(위의 표를 보아서는 예약을 할수 없겠죠....^^)

프로그램상으로 퀴리를 날려서 날짜를 비교할려고 합니다.

많은 가르침 부탁드려요.

select * from Lend where ..................................
3  COMMENTS
  • Profile
    김지호 2005.08.23 00:21
    select count(*) from aaaa
    where (out_date between 2005년 8월 9일 and 8월 15일)
    or ((end_date+1)  between 2005년 8월 9일 and 8월 15일)


  • Profile
    김상균 2005.08.23 08:09
    뭐가 잘못 되었는지 잘 안되네요. 사용 디비는 mysql 을 사용하고 있습니다.
    그리고 between은 어떤 기능을 하는것인지 알고 싶습니다.
    자료도 찾아 안찾아 보고 질문을 드려서 죄송 합니다.
    <!--CodeS-->
        Result := True;
        with db_main.temp_data do
        begin
          if active then close;
          sql.clear;
          sql.add('select * from '+order_board);
          sql.add(' where m_no = :a1');
          sql.Add('and (out_date between :a2 and :a3)');
          sql.Add('or ((end_date+1)  between :a2 and :a3)');
          open;
          parambyname('a1').asinteger := check_m_no;
          parambyname('a2').asdate := strtodate(check_date);
          parambyname('a3').asdate := strtodate(check_date)+check_su;
          open;
          if RecordCount > 0 then Result := False;
        end;

    <!--CodeE-->


  • Profile
    유응철 2005.08.23 18:40
    헉... between
    제 생각엔 질문을 올리신 분은 sql구문의 기본서적을 먼저 보셔야 될것 같습니다.
    설명을 달자면 파라메타로 들어온 a2부터 a3의 사이의 값을 조건으로 걸어서 쿼리 한다는 ....