簡體   English   中英

如何使用mysql獲取一個月中每一天的記錄

[英]How to fetch records for every day in a month using mysql

我正在使用mysql,並且我的報告要求獲取每月(如果按月搜索)和每月(如果按年份搜索)每天的注冊數據。

這是我用來獲取結果的查詢

查詢:

SELECT 
  COUNT(tenant_id) AS registered, 
  DATE_FORMAT(created_date,'%d') AS weeks 
FROM asign_user 
WHERE DATE_FORMAT(created_date,'%m')='02' 
AND DATE_FORMAT(created_date,'%Y') = '2014' 
GROUP BY DATE_FORMAT(created_date,'%d');
-------------------------------
Day       |     Registered
-------------------------------
11                   5
12                   6
13                   1
14                   8
16                   9
25                   15

預期結果應該是

-------------------------------
Day       |     Registered
-------------------------------
01                   0
02                   0
03                   0
04                   0
05                   0
06                   0
.                    .
.                    .
.                    .
.                    .
11                   5
12                   6
13                   1
14                   8
15                   0
16                   9
.                    .  
.                    .
25                   15
.                    .  
.                    .
30/31                0

我曾經創建一個名為“ all_days”的額外表,該表由給定期間(5年)中的所有天數組成。 您可以將其與外部聯接一起使用,然后創建所需的輸出。 我還建議您不要使用該方法,而應在應用程序級別上這樣做(這就是Strawberry所說的)。 我在報告引擎中使用了該方法,該方法不允許任何應用程序級別的編碼,因此對我有用。...但是結果很慢:(

就個人而言,我會將查詢略微移至第weeks ,以便可以在其上使用array_shift

注意:我在基本的MySQL中編寫它,因為您未聲明是使用mysql_還是mysqli_作為連接層

$sql = <<<SQL
    SELECT 
      DATE_FORMAT(created_date,'%d') AS weeks 
      COUNT(tenant_id) AS registered, 
    FROM asign_user 
    WHERE DATE_FORMAT(created_date,'%m')='02' 
    AND DATE_FORMAT(created_date,'%Y') = '2014' 
    GROUP BY DATE_FORMAT(created_date,'%d');
SQL;
$run = mysql_query($sql);
if (mysql_num_rows($run) > 0)
{
    // Create data
    // This will give the days their registration count.
    $days = array();
    while ($day = mysql_fetch_assoc($run))
    {
        $days[array_shift($day)] = $day['registered'];
    }

    // Calculate days in the month
    $month = cal_days_in_month(CAL_GREGORIAN, 2, 2014);

    // Then loop them and print results
    for ($i = 1; $i <= $month; $i++)
    {
        if (isset($days[$i])) {
            echo "$i : " . $days[$i] . "<br />";
        }
        else {
            echo "$i : 0<br />";
        }
    }
}

上面顯示了一個月中的天數-每月編輯起來應該不難:)

請訪問此博客, http://www.media-division.com/using-mysql-generate-daily-sales-reports-filled-gaps/

這個想法是創建一個日歷表。

您還可以使用cron作業和此sql INSERT INTO calendardatefield )VALUES(CURDATE())來填充新日期日期

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM