[英]Select statement that counts matching dates (not time) from a timestamp in sql
我不想合並或分組它們。 我只想計算給定表中匹配的日期(不是小時/分鍾/秒),然后使用php在簡單的日歷上突出顯示給定的日期。 (因此突出顯示具有兩個以上條目的日期。)
我只是不知道該聲明。 這是我嘗試過的例子。 我拉一些行,但不是100%。
SELECT *
FROM `foo_table`
WHERE DAY(`start`) IN
(
SELECT DAY(`start`)
FROM `foo_table`
WHERE MONTH(`start`) IN (01)
AND MONTH(`end`) IN (01)
GROUP BY `start`
HAVING COUNT(*) > 1
)
ORDER BY `start`
這是桌子:
id start end
1 2014-01-01 10:00:00 2014-01-02 10:00:00
2 2014-01-02 10:00:00 2014-01-04 10:00:00
3 2014-01-03 10:00:00 2014-01-06 10:00:00
4 2014-02-01 10:00:00 2014-02-02 10:00:00
5 2014-02-01 10:00:00 2014-02-02 10:00:00
6 2014-10-01 10:00:00 2014-10-19 10:00:00
我希望該語句對以下查詢顯示:1月3日唯一條目。 2月2日匹配條目。 等等。
當給定一天有一個,兩個或三個條目時,我正在使用php更改日歷的字體。 我只是似乎不知道如何找出條目的數量以及哪幾天。
如果我對您的理解正確,那么這樣的事情對您有用嗎:
SELECT DAY(`start`), COUNT(*)
FROM foo_table
WHERE DATE_FORMAT(`start`, "%Y-%m") = '2014-03'
GROUP BY 1;
這將為您返回類似於以下內容:
+-----------+----------+
| 1 | 266 |
| 2 | 260 |
| 3 | 304 |
| 4 | 298 |
| 5 | 251 |
| 6 | 293 |
| 7 | 310 |
| 8 | 243 |
| 9 | 248 |
| 10 | 288 |
| 11 | 290 |
| 12 | 245 |
| 13 | 315 |
| 14 | 333 |
| 15 | 298 |
| 16 | 268 |
| 17 | 282 |
| 18 | 245 |
| 19 | 252 |
| 20 | 293 |
| 21 | 63 |
+-----------+----------+
您的子查詢需要按date(start)
分組date(start)
:
SELECT *
FROM `foo_table`
WHERE DATE(`start`) IN (SELECT DATE(`start`)
FROM `foo_table`
WHERE MONTH(`start`) IN (01) AND MONTH(`end`) IN (01)
GROUP BY DATE(`start`)
--------------------------------^
HAVING COUNT(*) > 1
)
ORDER BY `start`;
但是,從您的描述來看,子查詢的輸出似乎已足夠,因為它可以標識具有多個條目的日期。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.