-5

最後のクロック時間からどのように選択しますか。たとえば、3 時 30 分の場合、3 時だけを選択するにはどうすればよいでしょうか。クエリが実行されたときから最後の 1 時間を行う方法は知っていますが、これを行う方法がわかりません。

4

3 に答える 3

3

WHEREあなたの句 でこれを試してください:

 WHERE DATE(columnname) = DATE(CURRENT_TIMESTAMP)
   AND HOUR(columnname) = HOUR(CURRENT_TIMESTAMP)

参照

于 2013-02-18T20:26:04.170 に答える
1

最適なパフォーマンスを得るには、(選択した回答のように) 列参照を関数でラップするのではなく、裸の列に述語が必要です。

mydatetimecol返される行を、現在の時刻に値を持つ行のみに制限するには:

 WHERE mydatetimecol >= DATE_FORMAT(NOW(),'%Y-%m-%d %H:00:00')

右側の式は、時間に切り捨てられた現在の日時値です。(この例では、現在の日時の分と秒の部分をゼロでフォーマットすることによってこれを行っています。これが唯一の方法ではありませんが、この方法は他の方法よりも読みやすいです。)

関数で列参照をラップする必要がないことに注意してください。述語でベアカラム参照をmydatetimecol使用すると、MySQL が でインデックス範囲スキャンを使用できるようになりますmydatetimecol

于 2013-02-18T21:05:33.920 に答える
0

これは、John Conde の回答のバリエーションです。where 句で関数を使用しないため、実行速度が向上する可能性があります。私はmysqlを使用しておらず、Googleを使用して構文を調べているため、構文が正しくない可能性があります。

where yourdatetimefield >= timestampadd(minute, 
, -minute(current_timestamp), current_timestamp)
于 2013-02-18T20:51:34.753 に答える