이 호텔에서 근무하고 예약을 만들었고 시스템, 시간당 시간은 무의미합니다. 으로 결제가 진행됩니다. 모든 것은 항상 밤에 청구됩니다. (한시간 씩 요금을 청구하는 장소를 운영하지 않을 경우 !;-)) 체크인 및 체크 아웃은 운영상의 고려 사항입니다.
실제 예약 시스템을 실제로 작성하려면 저장 프로 시저를 사용하지 마십시오. 데이터베이스를 보유하는 목적을 상쇄합니다.
또한 2007-04-29와 같은 날짜는 모두 똑같은 장소에있는 것은 아니기 때문에 2007-04-29 날짜를 작성하는 것이 좋습니다. 이는 국제 표준입니다. 또한이를 문자열로 바꾸려면 여전히 올바르게 정렬됩니다.
MySQL에 내장 된 함수가 없으므로 calandar 테이블을 만들어야합니다. 이 절차는 날짜를 작성합니다. 에서
drop table if exists calendar;
create table calendar
(
date_ date primary key
);
drop procedure fill_calendar;
delimiter $$
create procedure fill_calendar(start_date date, end_date date)
begin
declare date_ date;
set date_=start_date;
while date_ < end_date do
insert into calendar values(date_);
set date_ = adddate(date_, interval 1 day);
end while;
end $$
delimiter ;
call fill_calendar('2007-1-1', '2007-12-31');
: http://www.ehow.com/how_7571744_mysql-calendar-tutorial.html
drop table if exists rates;
create table rates
(
season varchar(100) primary key,
start_date date references calendar(date_),
end_date date references calendar(date_),
rate float
);
insert into rates values ('Low', '2007-01-01', '2007-04-30', 100.00);
insert into rates values ('High', '2007-05-01', '2007-08-31', 150.00);
insert into rates values ('Peak', '2007-09-01', '2007-12-21', 200.00);
select * from rates;
season start_date end_date rate
Low 2007-01-01 2007-04-30 100
High 2007-05-01 2007-08-31 150
Peak 2007-09-01 2007-12-21 200
나는 당신이 당신의 질문에 준 날짜를 무시하는거야와 클라이언트가 시간 뒤로 이동하지 않습니다 가정합니다.
select
date_, rate
from calendar
join rates
on date_ >= start_date and date_ <= end_date
where date_ between '2007-04-29' and '2007-5-01'
;
date_ rate
2007-04-29 100
2007-04-30 100
2007-05-01 150
select
sum(rate)
from calendar
join rates
on date_ >= start_date and date_ <= end_date
where date_ between '2007-04-29' and '2007-5-01'
sum(rate)
350
그리고 알 수 있듯이 SQL은 기능이나 절차에 의존하지 않고도 매우 간결하고 읽기 쉽습니다. 이것은 적절하게 확장되고 더 복잡한 질문을 처리 할 수 있습니다. 또한 데이터가 테이블 기반이기 때문에 참조 검사를 사용할 수 있습니다.
무엇이 문제입니까? SQL? 코드를 실행하는 데 사용 되나요? 데이터 파싱? 데이터 렌더링? 더 많은 정보가 필요합니다. –
밤에는 2 일 동안 벌어집니다. 먼저 4 월 30 일에 종료되는 요율이 하루가 끝날 때 밤에 적용되는지, 아니면 같은 날 밤이 1 월부터 적용되는 요율인지 여부를 정의해야합니다. –