SQL データベースをフィルタリングしようとしています。
各行はユーザーを表します。私が注目しているメインの列は、last_visited というタイトルで、… 2009-06-17 12:15:32 のようにフォーマットされています。
過去の日/週/月に何人のユーザーがアクセスしましたか?
のように:
SELECT COUNT(*) AS USERS_TODAY
FROM parts_users
Where updated_at > (NOW()-7)
では、列のテキストですか、それとも日時ですか? 前者の場合:
SELECT COUNT(*) AS USERS_TODAY
FROM parts_users
WHERE CONVERT(datetime, updated_at, 120) > DATEADD(day, -7, GETDATE())
後者の場合は、CONVERT を省略します。
あるいは、次のような便利なものが見つかるかもしれません:
SELECT CONVERT(datetime, LEFT(updated_at, 10), 120) AS DATE_ONLY,
COUNT(*) AS USERS_TODAY
FROM parts_users
WHERE CONVERT(datetime, updated_at, 120) > DATEADD(day, -7, GETDATE())
GROUP BY CONVERT(datetime, LEFT(updated_at, 10), 120)
iReport で SQL を使用して同じアイテムの複数の SUM をクエリする方法
SELECT
SUM(case when (NOW()-1) <= datetime then 1 else 0 end) as 'today',
SUM(case when (NOW()-7) <= datetime then 1 else 0 end) as 'thisweek',
COUNT(*) as 'thismonth'
FROM
table
WHERE
(NOW()-30) <= datetime AND datetime <= NOW()