2010-08-28 146 views
1

我已經如上圖具有兩列一個表計算總天數在specied日期

alt text

表列的名稱是(MAXDATE,量)。

,如果你看到我們有

first date range (from current date to 20-jan-2010) 
    second date range from 20-jan-2010 to 30-jan-2010 
    3rd range is from 20-jan-2010 to 31-jan-2010. 

在頁面用戶執行輸入開始日期和結束日期。

例如,如果用戶把

 start date: 18-jan-2010 
     end date: 23-jan-2010 

然後他在第一個選項2個日期和第二選項3個日期。

我理想中的SQL計算

1. how many days in first range (if any this depends on supplied dates from user) 
2. how many days in 2nd range (if any this depends on supplied dates from user) 
3. how many days in 3rd range (if any this depends on supplied dates from user) 

感謝

+0

你應該考慮改變你的架構包含一個開始和結束日期,例如。 (start_date,end_date,amount)。 – 2010-08-28 10:26:00

+0

我不明白關於用戶輸入的部分。假設你是例子,你能顯示你想要計算的範圍嗎?謝謝。 – Mischa 2010-08-28 10:26:34

+0

啊我想我明白你的意思。在你的例子中,第一個範圍是18-jan到20-jan,第二個20-jan到23-jan,最後一個範圍是0天,對吧? – Mischa 2010-08-28 10:28:49

回答

1

下面是一個例子,如何計算天。

http://dev.mysql.com/doc/refman/5.0/en/date-calculations.html

+0

如果您使用孤立單位(年數,同月的月數或同月的日數),則直接加/減日期纔有效。 'DAY(date1)-DAY(date2)'不適用於此應用程序。我想你的意思是鏈接到:http://dev.mysql.com/doc/refman/4.1/en/date-and-time-functions.html#function_date-add – 2010-08-28 11:35:13

0

你可以做到這一切在MySQL:

SELECT DATEDIFF(NOW(), max_date) as days; 
SELECT DATEDIFF(date2, date1) FROM 
    (SELECT max_date as date1 FROM table1 LIMIT 1) as s1 
    JOIN 
    (SELECT max_date as date2 FROM table1 LIMIT 1 OFFSET 1) as s2; 
//etc.