2015-11-13 81 views
0

我在這個結構中建立了一個數據庫表格。PHP中兩次在MySQL中的區別

ID  - INT 
addDate - DateTime 
sunrise - Time 
sunset - Time 

數據集看起來像

現在我試圖檢索之間

SELECT addDate, TIMESTAMPDIFF(MINUTE, sunrise, sunset) AS duration FROM SunData WHERE date(addDate) BETWEEN curdate() - interval 7 day and curdate() ORDER BY addDate ASC 

我的每一行的持續時間在獲得NULL結果以分鐘爲單位的差異。

代碼以顯示這些值

$date = date("Y-m-d H:i:s", strtotime(str_replace('-','/',$row->addDate))); 
$duration = $row->duration/60; 

echo "Dauer: " . $duration . "Stunden\n"; 

爲什麼值越來越少?我的查詢是否正確?

+1

究竟是你想做些什麼?你的查詢獲取存儲時間和NOW()的差值,按照存儲時間排序,所有這些時間都在過去。所以,是的,這些價值會下降。 –

+2

你的意思是找出日出和日落的區別? I.E.每天的日光量? – JRD

+0

改變了一點...見編輯... –

回答

1

您按照addDate的升序排列。您正在使用now()addDate之間的差異。升序意味着addDate繼續變大,因此addDatenow()之間的差異越來越小。

0

我不確切知道你的目標是什麼 - 但是每一條記錄你現在越來越接近() - 這就是爲什麼值越來越少。

您的查詢不使用日出和日落領域:

SELECT addDate, TIMESTAMPDIFF(MINUTE, DATE_ADD(addDate,sunset), DATE_ADD(addDate, sunrise)) 
+0

這是行不通的。在日落附近獲得語法錯誤) –

+0

因爲我在mysql中讀取函數順序是較低的時間戳第一 - 所以順序是日出,然後日落 –

+0

SELECT addDate,TIMESTAMPDIFF(分鐘,DATE_ADD(addDate,日出),DATE_ADD(addDate,日落) )AS持續時間FROM SunData WHERE日期(addDate)BETWEEN curdate() - 間隔7天和curdate()ORDER BY addDate ASC =>結果語法錯誤 –