0

部分的な回答で編集:

基本的に、過去 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() は役に立つかもしれませんが、よくわかりません。

4

1 に答える 1

1

「午前 0 時以降」は、時間のない現在の日付です。時刻のない現在の日付の MySQL 関数はCURDATE()であり、日付、時刻、またはタイムスタンプを UNIX 値に変換する関数は ですUNIX_TIMESTAMP

SELECT * FROM your_table
WHERE Ftimestamp_column > UNIX_TIMESTAMP(CURDATE());

また、PostgreSQLdate_trunc関数に相当する MySQL はDATE().

于 2013-07-25T04:36:12.300 に答える