2016-10-01 2 views
1

dates 데이터베이스에는 두 개의 후속 조치가 완료된 후 30 일 후, 60 일 후 한 후속 조치가있는 날짜 테이블이 있습니다. 난 30day 값이 No (할 수있는) dates 테이블에서 모든 날짜를 끌어 오기 위해 MySQL 쿼리를 사용하는 페이지를 작성해야합니다. 이제 까다로운 부분은 해당 기준을 충족하는 날짜 만 출력하고 현재 날짜로부터 30 일이 필요하다는 것입니다. 예를 들어PHP 날짜와 요일 사이의 날짜 날짜

8 월 4 6 & No30day의 값이 8 월 5 Yes30day의 값을 갖는다. 오늘 날짜는 9 월 4 일입니다. 30 일 전에는 8 월 5 일이됩니다.

8 월 6 일과 8 월 5 일이 이미 완료된 이후 30 일이 아니기 때문에이 경우 8 월 4 일만 표시하는 쿼리가 필요합니다. .

이 계산을 위해 어떤 기능을 사용해야하는지 확신 할 수 없습니다. 나는 당신의 도움에 감사

편집 :

Date - 30day Value 
July 1 - Yes 
July 5 - No 
August 1 - No 
August 5 - No 
August 6 - Yes 

오늘의 날짜는 9 월 2 일

자신의 삼십일 값이 없음이기 때문에 표는 7 월 5 일 8 월 1 일을 표시하지 않을 것이다, 그들은 더 있습니다입니다 오늘부터 30 일 이상.이 날짜 칼럼의 예입니다

SELECT .... 
FROM your_table 
WHERE DATEDIFF(CURDATE(), event_date) = 30 

EVENT_DATE :

+0

http://www.w3schools.com/sql/func_datediff.asp. 이렇게하면 쿼리를 통해 직접 데이터를 가져 오는 데 도움이됩니다 –

+1

예제 데이터와 원하는 결과가 실제로 원하는 것을 설명하는 데 도움이됩니다. –

+0

@ GordonLinoff 나는 8 월에 날짜에 관해 나의 지위의보기를 가지고있다. 30 일이 지난 30 일의 값을 갖는 테이블을 No. –

답변

1

MySQL의 DATEDIFF 함수를 사용하면 쿼리에서 2 개의 날짜를 뺄 수 있습니다.

http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_datediff

DATEDIFF() 반환 EXPR1 - expr2이 다른 한 날로부터 일 이후까지의 값으로 표현했다. expr1 및 expr2는 날짜 또는 날짜 및 시간 표현입니다. 값의 날짜 부분 만 계산에 사용됩니다.

SELECT some_id, date_column 
FROM date_table 
WHERE DATEDIFF(CURDATE(), date_column) = 30 

또한이 같은 두 30 60 일을 선택하고 테이블 전체를 검색하지 그래서 또한 60 일 기준 날짜를 가질 수있다 :

SELECT some_id, date_column 
FROM date_table 
WHERE date_column>=DATE_SUB(CURDATE(), INTERVAL 60 DAY) 
AND DATEDIFF(CURDATE(), date_column) IN (30, 60) 
를 예를 들어

그리고 여러분이 묻는 것에 대한 이해를 바탕으로 몇 가지 가정을하고 있기 때문에 결과 집합에 '예'또는 '아니요'로 결과를 반환 할 수도 있습니다.

당신은 PHP 측에서이 작업을 수행하려면 0
SELECT some_id, date_column, 
CASE DATEDIFF(CURDATE(), date_column) 
    WHEN 60 THEN 'Yes' 
    WHEN 30 THEN 'Yes' 
    ELSE 'No' 
END CASE AS is_3060_day 
FROM date_table 
WHERE date_column>=DATE_SUB(CURDATE(), INTERVAL 60 DAY) 

다른 방법으로는 PHP의 date_diff 기능을 사용할 수 있습니다 : 당신이 날짜를 모두 가져올 수

http://php.net/manual/en/function.date-diff.php

function dateDifference($date_1 , $date_2 , $differenceFormat = '%a') 
{ 
    $datetime1 = date_create($date_1); 
    $datetime2 = date_create($date_2); 

    $interval = date_diff($datetime1, $datetime2); 

    return $interval->format($differenceFormat); 

} 
$result = dateDifference($date1, $date2) 
if ($result==30 || $result==60) { 
    // Do something 
} 
+1

내가 본 가장 우수하고 자세한 답변 중 하나를 골라라. 클레이튼, 고마워요! –

2

당신은 DATEDIFF에게 기능을 사용해야합니다.

+0

답변 해 주셔서 감사합니다. –

1

및 PHP 함수를 사용

$prevdate = date_create("2013-03-15"); 
$currdate = date_create("2013-12-12"); 
$diff = date_diff($prevdate,$currdate); 
echo $diff->format("%R%a days"); 

출력

272 days 
관련 문제