0

投稿者が最後にテーブルにデータを送信した時間に基づいて、テーブルへの挿入を制限するクエリを作成しようとしています。

たとえば、テーブルにデータを投稿した場合、システムからさらに 10 時間ロックアウトされます。これが私がこれまでに思いついたものです。しかし、データの実際の結果はどこにもありません。何か助けはありますか?

SELECT DATE(  `date` ) 
FROM tablename
WHERE DATE( CURDATE( ) ) < CURDATE( ) - INTERVAL 1002 
DAY 
LIMIT 0 , 30
4

4 に答える 4

1

存在する場合、これは過去 10 時間から単一の投稿を返します。

SELECT  *
FROM    tablename
WHERE   `date` >= NOW() - INTERVAL 10 HOUR
LIMIT   1

actualには時刻部分が含まれていないため、日単位の正確さしかないため、dateが として宣言されていると想定しています。DATETIMEDATE

dateが整数の UNIX タイムスタンプの場合は、次を使用します。

SELECT  *
FROM    tablename
WHERE   `date` >= UNIX_TIMESTAMP(NOW() - INTERVAL 10 HOUR)
LIMIT   1
于 2013-05-22T19:54:52.043 に答える
0

これを行う方法はいくつかあります。おそらく、ユーザー設定テーブルがある場合は、単に「last_insert」フィールドを追加し、タイムスタンプを整数値として保存できます。これは非常に簡単な方法です。現在のタイムスタンプと user_settings.last_insert を比較して確認できます。 ! datetime も使用できると思います。ボートを浮かせるものは何でも。

于 2013-05-22T19:54:44.563 に答える
0

まず、DATETIME列ではなく列が必要DATEです。を列とすると、10 時間前の現在はtablename.dateです。DATETIMECURRENT_TIMESTAMP - INTERVAL 10 HOUR

于 2013-05-22T19:55:07.943 に答える
0

まず、テーブルに Time (TIMESTAMP DEFAULT CURRENT_TIMESTAMP) columnt を作成します。行挿入時に現在の日付に自動的に設定されます

次に確認します。

SELECT COUNT(*) FROM Table WHERE Time > NOW() - INTERVAL 10 HOUR

1 つ以上の場合 - ブロック

現在の時刻と現在の時刻ではなく、最後の投稿が投稿された時刻と現在の時刻を比較する必要があります:|

于 2013-05-22T19:55:21.557 に答える