簡體   English   中英

Select語句,該語句從sql中的時間戳計數匹配的日期(而不是時間)

[英]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.

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