2016-10-01 146 views
1

在我的dates數據庫中我有一個日期表,有兩個後續工作要完成,一個30天后,一個60天后。我需要建立一個使用MySQL查詢的頁面,從dates表中取得30day值爲No(我可以這樣做)的所有日期。現在棘手的部分是,我需要它僅輸出符合該標準的日期,並且距離當前日期爲30天。PHP計數日期和今天日期

例如:8月4日& 6具有的No一個30day值,8月5日具有Yes一個30day值。今天的日期是9月4日.30天前是8月5日。

我需要查詢才能在這種情況下顯示8月4日,因爲從8月6日和8月5日已經完成。

我不確定用什麼樣的函數來做這個計數。我感謝你的幫助

編輯:

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天值是無,他們更比今天的日期晚了30天。

+0

http://www.w3schools.com/sql/func_datediff.asp。這將幫助您通過查詢直接獲取數據 –

+1

樣本數據和期望的結果將真正幫助您解釋您想要做什麼。 –

+0

@GordonLinoff我在8月份的帖子中有一個例子。我希望有一個表格可以導出過去30天內有30天價值爲 –

回答

1

MySQL的DATEDIFF函數允許您在查詢中減去2個日期。

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

DATEDIFF()將返回EXPR1 - 表達式2表示爲從一個日期至另一個在天的值。 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) 

由於我對自己的要求有所瞭解,因此您可能還希望這樣做,它會在結果集中將結果返回爲「是」或「否」:

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端,你可以使用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

放下我見過的最好和最詳細的答案之一。謝謝Clayton,非常感謝! –

2

您應該使用DATEDIFF功能:

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

EVENT_DATE是例如您的日期列。

+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