2013-02-17 4 views
0

현재 학교에서 보고서에있는 학생을 관리하기위한 시스템을 개발하고 있지만 걸림돌이되어 버렸습니다. 내 SQL 테이블 ('onreport')에는 'duration'이라는 필드가 있습니다.이 행에 저장된 저장된 날짜가 삭제 될 레코드가 필요합니다. 즉, 리포트가 만료되었습니다.날짜 초과시 SQL 테이블에서 레코드 삭제

<?php 
    include('connect.php'); //connect to the database 
    $today = new DateTime("now"); 
    $f_today=$today->format('Y-m-d'); 
    mysql_query('DELETE FROM onreport WHERE duration ==$f_today'); 
    //print('$f_today') 
    ?> 

나는 이것이 작동하더라도 가장 효율적인 방법이 아닐 수도 있다는 것을 알고 있지만 필사적이되었습니다. 주석 처리 된 print 문을 포함하여 오늘의 정확한 날짜를 표의 형식과 동일한 형식으로 인쇄하기 때문에 코드가 실행되고 있음을 알고 있습니다. 지속 기간 열은 '날짜'유형이며 표에는 yyyy-mm-dd로 표시됩니다.

+0

오류가 있습니까? – DevelopmentIsMyPassion

+3

테이블 구조를 게시하거나 적어도 'duration'의 SQL 유형이 무엇인지 알려줄 수 있습니까? –

+0

그리고 오류가 나타나지 않습니다. – user1892282

답변

1

날짜를 비교하는 대신 일반적으로 나쁜 습관으로 간주되는 문자열을 비교하는 것처럼 보입니다. 그러나 DB 스키마를 게시하지 않았으므로 알기가 어렵습니다. 오늘 전에 게시 된 모든 보고서를 제거하려는 경우

그러나 필드 기간은 DATE 타입이라고 가정 순수한 SQL 쿼리를 사용할 수 있습니다

DELETE FROM onreport WHERE TIMESTAMPDIFF(DAY,CURDATE(),duration)>0 

이 쿼리는 두 날짜 비교 : CURDATE()를하는 duration 값으로 현재 서버 시간이고 결과를 일 수로 반환합니다. 이 값이 0보다 크면 행이 제거됩니다.

+0

우수! 이것은 단지 속임수 였고, 나는 그것이 의료 행위 였음을 알고 있었고, 나는 그 방법을 알지 못했습니다. 고마워요 :) – user1892282

+0

당신은 환영합니다 :) – Julien

관련 문제