2013-12-14 19 views
0

假設我有Mysql如何計算從和到目前爲止的日期?

 > ID    FromDate       ToDate 
    > --    --------       ------- 
    > 1    '2013-12-14 00:00:00'   '2013-12-23 00:00:00' 
    > 2    '2013-12-24 00:00:00'   '2013-12-31 00:00:00' 

對於我的情況下,用戶從 '2013-12-14 00:00:00' 搜索到 '2013年12月29日00:00:00'

總天數是「15」。 我想輸出是這樣的

> ID     FromDate       ToDate    countdays 
> --    --------       ------- 
> 1    '2013-12-14 00:00:00'   '2013-12-23 00:00:00'   9 
> 2    '2013-12-24 00:00:00'   '2013-12-31 00:00:00'   6 

9 + 6 = 15

第一行沒有fromdate和todate是用戶沒有fromdate和todate之間所以countdays是9 第二行i要計數從「天2013- 12-24 00:00:00'直到'2013-12-29 00:00:00'我怎樣才能做到這一點與MySQL?

+0

如果你知道時間總是午夜,只需從後者中減去前一天,並添加1. –

+0

@Pieter Geerkens。您假定用戶在一個月內在兩個日期之間進行搜索。這個問題並非真正的有效答案。 –

+0

@PeteR:不; SQL日期時間類型將數據存儲在浮點表示形式中,其中整數部分是日期(從時期開始算起),小數部分是一天中的一小部分。我已經使用了幾種SQL方言,這在我的經驗中一直如此。 –

回答

1

SQL 選擇ID,沒有fromdate,TODATE,DATEDIFF(DAY,TODATE,沒有fromdate)作爲計數從表名

語法在SQL:

DATEDIFF(日期部分,開始日期,結束日期)

MYSQL

Select ID, FromDate, ToDate , DATEDIFF(ToDate, FromDate) As Count From TableName 

例子:

DATEDIFF(expr1,expr2) 

DATEDIFF() returns expr1 – expr2 expressed as a value in days from one date to the other. expr1 and expr2 are date or date-and-time expressions. Only the date parts of the values are used in the calculation. 

mysql> SELECT DATEDIFF('2007-12-31 23:59:59','2007-12-30'); 
     -> 1 
mysql> SELECT DATEDIFF('2010-11-30 23:59:59','2010-12-31'); 
     -> -31 

來源:Date Difference documentation by MYSQL

希望這有助於

0

,您可以嘗試這樣

SELECT t.*, 
     DATE(LEAST(t.todate, s.todate)) 
    - DATE(GREATEST(t.fromdate, s.fromdate)) countdays 
    FROM table1 t CROSS JOIN 
(
    SELECT '2013-12-14 00:00:00' fromdate, 
     '2013-12-29 00:00:00' todate 
) s 
WHERE s.fromdate BETWEEN t.fromdate AND t.todate 
    OR s.todate BETWEEN t.fromdate AND t.todate 

這裏是SQLFiddle演示