2014-07-10 87 views
-2

我有這樣的記錄:MySQL的 - 如何顯示從給定的範圍日期的所有日期

 
id | name | date 
1 | aji | 2014-06-01 
2 | akon | 2014-06-02 
3 | dewi | 2014-06-04 
4 | dani | 2014-06-05 

我想從2014-06-01顯示所有日期 - 2014年6月6日,即使他們有沒有相關記錄:

 
id | name | date 
1 | aji | 2014-06-01 
2 | akon | 2014-06-02 
NULL | NULL | 2014-06-03 
3 | dewi | 2014-06-04 
4 | dani | 2014-06-05 
NULL | NULL | 2014-06-06 
+0

您正在使用哪些DBMS? Postgres的?甲骨文? –

+1

可能重複[MySQL:兩個日期之間的查詢?](http://stackoverflow.com/questions/3822648/mysql-query-between-two-dates) – user986959

+0

@ user986959,我需要顯示記錄eventhough該日期是空的 – user3824520

回答

1

可能您可以使用這種方式。

SQL服務器

Select IsNull(id, Null), IsNull(name,Null),date 
    where date Between 2014-06-01 and 2014-06-06. 

如果ID已設置爲int,然後做這樣

Select IsNull(id, 0), IsNull(name,Null),date 
    where date Between 2014-06-01 and 2014-06-06. 

MY SQL

select id, name,date from tr_kehadiran 
    where date >= "2014-06-30" AND date <= "2014-07-06" AND id is Null AND name is Null 

請讓我知道結果。

+0

查詢:從tr_kehadiran選擇IsNull(id,0),IsNull(name,0),日期> =「2014-06-30」和日期<=「2014-07-06」 錯誤代碼:1582 使用mySQL btw調用本機函數'IsNull' – user3824520

+0

不正確的參數數 – user3824520

+0

簡單。然後看看我更新的部分。 – gkrishy

1

我不知道我明白你在問什麼。 但

SELECT * FROM table WHERE date BETWEEN '2014-06-01' AND '2014-06-06' 

而且

<?php 
$start = new DateTime('2014-06-01'); 
$interval = new DateInterval('P1D'); 
$end = new DateTime('2014-06-06'); 

$period = new DatePeriod($start, $interval, $end); 

foreach ($period as $date) 
{ 
    if (isset($results['date'][$date])) 
    { 
     // Results display 
    } 
    else 
    { 
     // NULL display 
    } 
} 

其中$結果是查詢

0

之後的結果是要遵循的步驟 -

如果SQL Server

  1. 使用CTE,填充需要按您的要求

  2. LEFT JOIN表格對CTE日期列上一個範圍的日期和填充日期在結果從CTE

如果設置缺少的MySQL -

  1. 創建臨時表填充日期範圍內按要求

  2. 左連接速度日期列上的日期表,填寫CTE結果集中缺失的日期。