2014-07-25 2 views
0

구입 한 날짜로부터 매 분기마다이자 지급을 계산하려고합니다.
DATEDIFF은 연도를 입력하지 않고 계산할 수 있으며 2 개의 날짜 사이에 매년 일수를 연속적으로 계산합니까?DATEDIFF 특정 날짜 사이의 계산

예 : 년

DATEDIFF ('10-25','*-01-01') while * is a wild card of years.없는 년과 성숙 날짜없이 DATEDIFF 현재 날짜가이 작업을 수행 할 수 있습니다 또는 그 일을하는 방법이있다?

현재 CODE : (당신은 SQL 바이올린에 볼 수)

// Escapes for security 
$pdate = mysqli_real_escape_string($con, $_POST['pdate']); 
$mdate = mysqli_real_escape_string($con, $_POST['mdate']); 
$amt = mysqli_real_escape_string($con, $_POST['amt']); 
$first = mysqli_real_escape_string($con, $_POST['first']); 
$last = mysqli_real_escape_string($con, $_POST['last']); 
$pid = mysqli_real_escape_string($con, $_POST['pid']); 
$cno = mysqli_real_escape_string($con, $_POST['cno']); 
$madd = mysqli_real_escape_string($con, $_POST['madd']); 
$bene = mysqli_real_escape_string($con, $_POST['bene']); 
$swc = mysqli_real_escape_string($con, $_POST['swc']); 
$bacc = mysqli_real_escape_string($con, $_POST['bacc']); 
$bank = mysqli_real_escape_string($con, $_POST['bank']); 
$badd = mysqli_real_escape_string($con, $_POST['badd']); 
$bno = mysqli_real_escape_string($con, $_POST['bno']); 

// Query with DATEDIFF calculation 
$sql="INSERT INTO contacts (
    nodays, q1, q, pdate, mdate, amt, first, last, 
    pid, cno, madd, bene, swc, bacc, bank, badd, bno 
) 
VALUES (
    DATEDIFF('$mdate','$pdate'), 
    (DATEDIFF('$mdate','$pdate') * '$amt'/365 * 0.025), 
    '$pdate','$mdate','$amt','$first','$last', 
    '$pid','$cno','$madd','$bene','$swc','$bacc','$bank','$badd','$bno' 
)"; 

// Executing and error checking of query 
if (!mysqli_query($con,$sql)) { 
    die('Error: ' . mysqli_error($con)); 
} 

echo "Client record has been added to the database!"; 

// Close MySQL 
mysqli_close($con); 
?> 
+1

질문을 편집하고 샘플 데이터 및 원하는 출력을주십시오. –

답변

2

참고로,이 확실히 작동하지 않습니다. 그러나 시작입니다. 다른 사람들 및/또는 당신이 뭔가 효과가있는 것을 얻는 데 도움이 될 경우를 대비하여 맡길 것입니다.

당신은 같은 테이블 구매가 가정 -

create table purchases (purchase_date date); 
insert into purchases values ('2014-10-25'); 

라는 테이블 n 행과 발전기, n은 생성이 예에서는 혹시 쿼리가 가고 싶은 것입니다 미래 년의 수 (인 5) :

create table generator (n int); 
insert into generator values (1),(2),(3),(4),(5); 

은 그런 다음 각 행에 대한이자 날짜와 구입 날짜 사이의 일의 차이로 앞서 구입일로부터 5 년 동안 그 간격으로 관심 날짜를 얻기 위해 다음 실행할 수 있습니다 :

select purchase_date, 
     concat(@rw := @rw + 1, '-01-01') as interest_date, 
     datediff(purchase_date, concat(@rw := @rw + 1, '-01-01')) as date_diff 
    from purchases 
cross join (select @rw := 2014) r 
cross join generator 
where n <= 5 
union all 
select purchase_date, 
     concat(@rx := @rx + 1, '-04-01') as interest_date, 
     datediff(purchase_date, concat(@rx := @rx + 1, '-04-01')) as date_diff 
    from purchases 
cross join (select @rx := 2014) r 
cross join generator 
where n <= 5 
union all 
select purchase_date, 
     concat(@ry := @ry + 1, '-10-01') as interest_date, 
     datediff(purchase_date, concat(@ry := @ry + 1, '-10-01')) as date_diff 
    from purchases 
cross join (select @ry := 2014) r 
cross join generator 
where n <= 5 
order by 2 

참조 바이올린 : http://sqlfiddle.com/#!2/6d367/3/0