部分的な回答で編集:
基本的に、過去 24 時間ではなく、今日の行のみを選択し、過去 31 日間 (7/1/13 -> 7/31/13、NOT 6/25/13 - > 2013 年 7 月 25 日)。
これは、今日の行のみを選択するために使用しているものです。ユーザーが指定したタイムゾーンのプレースホルダーとして America/Los_Angeles を使用します (PHP を使用して入力されます)。以下で使用される「タイムスタンプ」は、行が作成されたときの標準の MySQL タイムスタンプです。
SELECT * FROM table
WHERE convert_tz(timestamp, 'UTC', 'America/Los_Angeles')
>= DATE(convert_tz(NOW(), 'UTC', 'America/Los_Angeles'));
週の記録については、ユーザーのタイムゾーンで現在の日付をDATE(convert_tz(NOW(), 'UTC', 'America/Los_Angeles'))
取得しますが、そこから週の最初の曜日を取得する方法がわかりません。今週のは 7/21/13 でした。
月については、今日の日付を取得し、MONTH() 関数を使用して月のみを取得し、次のようにして新しい Date オブジェクトを作成できます。
str_to_date(
concat( MONTH( [today's date from above] ),
' 01',
' 2013'),
'%m %d %Y'
)
そして、それは私に今月の最初の日を与えるでしょう. 必要に応じて、今年の行についても同じことができます。
とにかく、今週作成された行だけが残ります。WEEKDAY() は役に立つかもしれませんが、よくわかりません。