0

過去7日間に自分のWebサイトに送信されたリンクの数を返すSQLクエリを作成しようとしています。これまでのところ私はこれを持っています:

SELECT COUNT(`id`) AS `count`
FROM `links`
WHERE `created` > NOW() - 86400
AND `created` < NOW()

これは1日間機能countし、過去24時間に送信されたリンクの数で呼び出された1つの行を返します。dateと呼ばれる2つの列を返しcount、7行(各日に1つ)を返すように変更する必要があります。

頭を動かすことができないトリッキーな部分createdは、timestamp列であり、それを変更するためのアクセス権がないため、それを操作する必要があります。

編集:クエリの進行中の作業:

SELECT DAY(FROM_UNIXTIME(created)) AS day, COUNT(id) count
FROM links
GROUP BY DAY(FROM_UNIXTIME(created))
LIMIT 7
4

1 に答える 1

2

NOW()を返すため、実際には機能しないはずdatetimeです。また、7日分のデータを取得する場合は、から減算604800UNIX_TIMESTAMP()ます。thendatetime関数をで使用できますFROM_UNIXTIME。これにより、グループ化が容易になります。最適には、列はdatetimeタイプである必要があります。

それは次のようになります:

SELECT DAY(FROM_UNIXTIME(created)) day, COUNT(id) count
FROM links
WHERE created > UNIX_TIMESTAMP() - 604800 AND created < UNIX_TIMESTAMP()
GROUP BY DAY(FROM_UNIXTIME(created))

BETWEENまたは、演算子を使用することもできます。

WHERE created BETWEEN UNIX_TIMESTAMP() - 604800 AND UNIX_TIMESTAMP()

デモを見る

于 2013-03-12T01:58:18.553 に答える