2

次の列があります。

ID    DATE                   NAME
1     2012-10-03 12:00:00    John
2     2012-10-03 13:00:00    Adam
3     2012-10-10 10:00:00    Pete

そして、特定の日付の間のすべての列を返したいのですが、月と日に1列だけです。個別のステートメントを使用してみましたが、すべての列を返すことはできず、月と日のみを返すようです (時間も考慮されます)。

私が望む結果は次のとおりです。

ID    DATE                   NAME
1     2012-10-03 12:00:00    John
3     2012-10-10 10:00:00    Pete

これらの 2 つの列は同じ月および/または日を共有していないためです。私はこれが簡単な声明であることを知っています。今私は使用しています:

SELECT id, DISTINCT date, name FROM table WHERE date BETWEEN ? AND ?
4

3 に答える 3

1

日付ごとにグループ化してみることができます

SELECT id, date, name 
FROM table 
WHERE date BETWEEN ? AND ?
Group By date_format(date, '%Y-%m-%d')
于 2012-10-03T06:28:44.203 に答える
1
SELECT  a.*
FROM    tableName a 
        INNER JOIN
        (
            SELECT DATE(`DATE`) dateOnly, MIN(ID) minID
            FROM tableName
            GROUP BY DATE(`DATE`)
        ) b ON a.ID = b.MinID AND
                DATE(a.`DATE`) = b.dateOnly
WHERE a.`DATE` BETWEEN ? AND ?

SQLFiddle デモ

于 2012-10-03T06:28:56.787 に答える
0

このクエリを使用できます-

SELECT ID, DATE, NAME FROM table
GROUP BY DATE(DATE)

...WHERE 条件を追加します。

于 2012-10-03T06:29:33.870 に答える