7

MySQLを使用していて、日付/時刻でアクションを実行する必要があった今日まで、UNIXタイムスタンプのint列を使用していて問題はありませんでしたが、今日、いくつかのガイドを読んだ後、デフォルトで「current_timestamp」を使用してタイムスタンプ列をテストすることにしました。

だから私は情報が「2012-09-0700:23:30」形式である列によって先月のデータを選択する方法に興味がありますか?そして、今月の初めから(過去30日間ではなく、09-01 00:00:00から今日まで)データを取得するためのトリッキーなクエリがあるかもしれません。

4

3 に答える 3

17

これはあなたに先月を与えるでしょう:

WHERE dateColumn BETWEEN SUBDATE(CURDATE(), INTERVAL 1 MONTH) AND NOW();

これは月の初めから:

WHERE dateColumn BETWEEN STR_TO_DATE('2012-09-01', '%Y-%m-%d') AND NOW();

BETWEENは特別なものではなく、単なるショートカットです。

dateColumn <= ... AND dateColumn >= ....

うーん、すべてのレコードが今より前にあるので、NOW()の比較は実際には必要ないと思います。

だから、ただやってください:

WHERE dateColumn >= STR_TO_DATE('2012-09-01', '%Y-%m-%d')

今月の動的開始:

WHERE dateColumn >= CURDATE() - INTERVAL DAY(CURDATE())-1 DAY

これは、現在の日付からその月の日を抽出し、その日から1日を引いた日を引くだけです。

于 2012-09-06T22:35:03.043 に答える
3

common_schemaを確認する必要があります。インストールは簡単で、start_of_month()探しているものとまったく同じであるという関数を含む、多くの優れたツールがあります。

select * 
from your_table
where your_column >= common_schema.start_of_month(now())
于 2012-09-06T23:48:44.170 に答える
-1

mysqlタイムスタンプがある場合、2013-09-29 22:27:10これを実行できるようなもの

 select * from table WHERE MONTH(FROM_UNIXTIME(UNIX_TIMESTAMP(time)))=9;

UNIXに変換してから、UNIX時間関数を使用して月を抽出します。この場合、9月は9です。

于 2013-10-04T17:09:43.460 に答える