簡體   English   中英

如何獲得給定日期之間每天的行數?

[英]How do I get the number of rows per day between given dates?

我有以下格式的表格。 當我在2008-10-12和2008-10-13之間給出日期時,我需要mysql查詢來獲取每天的行數

Name | KW     | KV   | I    | Date                |
------+--------+------+------+---------------------+
 UPS1 | 353.50 | NULL | NULL | 2008-10-12 00:54:36 |
 UPS1 | 352.50 | NULL | NULL | 2008-10-12 01:54:36 |
 UPS1 | 351.90 | NULL | NULL | 2008-10-12 02:54:36 |
 UPS1 | 351.60 | NULL | NULL | 2008-10-12 03:54:36 |
 UPS1 | 352.20 | NULL | NULL | 2008-10-12 04:54:36 |
 UPS1 | 352.20 | NULL | NULL | 2008-10-12 05:54:36 |
 UPS1 | 351.90 | NULL | NULL | 2008-10-12 06:54:36 |
 UPS1 | 352.50 | NULL | NULL | 2008-10-12 07:54:36 |
 UPS1 | 352.50 | NULL | NULL | 2008-10-12 08:54:36 |
 UPS1 | 353.20 | NULL | NULL | 2008-10-12 09:54:36 |
 UPS1 | 353.50 | NULL | NULL | 2008-10-12 10:54:36 |
 UPS1 | 352.20 | NULL | NULL | 2008-10-12 11:54:36 |
 UPS1 | 352.50 | NULL | NULL | 2008-10-12 12:54:36 |
 UPS1 | 352.20 | NULL | NULL | 2008-10-12 13:54:36 |
 UPS1 | 353.20 | NULL | NULL | 2008-10-12 14:54:36 |
 UPS1 | 353.50 | NULL | NULL | 2008-10-12 15:54:36 |
 UPS1 | 352.90 | NULL | NULL | 2008-10-12 16:54:36 |
 UPS1 | 352.20 | NULL | NULL | 2008-10-12 17:54:36 |
 UPS1 | 352.20 | NULL | NULL | 2008-10-12 18:54:36 |
 UPS1 | 352.90 | NULL | NULL | 2008-10-12 19:54:36 |
 UPS1 | 352.20 | NULL | NULL | 2008-10-12 20:54:36 |
 UPS1 | 352.50 | NULL | NULL | 2008-10-12 21:54:36 |
 UPS1 | 352.90 | NULL | NULL | 2008-10-12 22:54:36 |
 UPS1 | 353.20 | NULL | NULL | 2008-10-12 23:54:36 |
 UPS1 | 355.80 | NULL | NULL | 2008-10-13 00:54:36 |
 UPS1 | 358.40 | NULL | NULL | 2008-10-13 01:54:36 |
 UPS1 | 358.00 | NULL | NULL | 2008-10-13 02:54:36 |
 UPS1 | 359.00 | NULL | NULL | 2008-10-13 03:54:36 |
 UPS1 | 357.70 | NULL | NULL | 2008-10-13 04:54:36 |
 UPS1 | 357.40 | NULL | NULL | 2008-10-13 05:54:36 |
 UPS1 | 357.40 | NULL | NULL | 2008-10-13 06:54:36 |
 UPS1 | 359.00 | NULL | NULL | 2008-10-13 07:54:36 |
 UPS1 | 357.10 | NULL | NULL | 2008-10-13 08:54:36 |
 UPS1 | 359.00 | NULL | NULL | 2008-10-13 09:54:36 |
 UPS1 | 357.70 | NULL | NULL | 2008-10-13 10:54:36 |
 UPS1 | 357.40 | NULL | NULL | 2008-10-13 11:54:36 |
 UPS1 | 357.40 | NULL | NULL | 2008-10-13 12:54:36 |
 UPS1 | 359.00 | NULL | NULL | 2008-10-13 13:54:36 |
 UPS1 | 357.10 | NULL | NULL | 2008-10-13 14:54:36 |
 UPS1 | 358.00 | NULL | NULL | 2008-10-13 15:54:36 |
 UPS1 | 359.30 | NULL | NULL | 2008-10-13 16:54:36 |
 UPS1 | 357.10 | NULL | NULL | 2008-10-13 17:54:36 |
 UPS1 | 358.40 | NULL | NULL | 2008-10-13 18:54:36 |
 UPS1 | 357.70 | NULL | NULL | 2008-10-13 19:54:36 |
 UPS1 | 359.00 | NULL | NULL | 2008-10-13 20:54:36 |
 UPS1 | 358.70 | NULL | NULL | 2008-10-13 21:54:36 |
 UPS1 | 358.70 | NULL | NULL | 2008-10-13 22:54:36 |
 UPS1 | 358.40 | NULL | NULL | 2008-10-13 23:54:36 |

我已經更改了查詢,以便“日期”列的大小寫與查詢結果中的內容完全匹配。

select Date, count(Date)
from TABLE
where Date >= '2008-10-12' and Date <= '2008-10-13'
group by Date

您將需要在from子句中更改TABLE,但是其他所有內容對於您的表來說都是正確的。

編輯:

我有一個具有類似結構的表,並且將日期列更改為“日期”。 以下對我有用。

mysql> select Date, count(Date) 
    from calendar_items 
    where date between '2008-12-12' and '2008-12-13' 
    group by Date;

+------------+-------------+
| Date       | count(Date) |
+------------+-------------+
| 2008-12-12 |          14 | 
| 2008-12-13 |           6 | 
+------------+-------------+
2 rows in set (0.00 sec)

mysql> 

不應該是:

選擇日期,計數(日期),其中日期> ='2008-10-12'和日期<='2008-10-13' 按日期分組

請看一下每天是否要提取記錄。您可以像這樣使用->從tbl_name中選擇一些內容WHERE DATE_SUB(CURDATE(),INTERVAL 30 DAY)<= date_col;

關於語法錯誤:由於“日期”是mysql中的保留術語,因此您必須在查詢中對其進行轉義。

考慮到這一點,ewalshes查詢應該起作用:

select `Date`, count(`Date`)
from TABLENAME
where `Date` between '2008-10-12' and '2008-10-13'
group by `Date`

我會嘗試這樣的:

SELECT count( * ) , date( `date` )
FROM `myTableName`
GROUP BY date( `date` )

(在MySql 4.1上測試)

暫無
暫無

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

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