MySQLでtimestamp型のカラムを検索してみる

timestamp型は形式として’YYYY-MM-DD HH:MM:SS'となっています。
そこで年月までだとか年月日まで検索したいな〜っと思った時があったので、その時使ったSQL文を載せておきます。

1.年月で検索したい場合

SELECT * FROM table_name WHERE timestamp_column LIKE '2018-07%';

2.年月日で検索したい場合

SELECT * FROM table_name WHERE timestamp_column LIKE '2018-07-31%';

whereのlike句の後方一致で検索できます。

しかし、timestamp型の落とし穴があります。

SELECT * FROM table_name WHERE timestamp_column BETWEEN '2018-07-01' AND '2018-07-31';

とすると、2018年7月1日から2018年7月31日ではなく、2018年7月1日から2018年7月30日の範囲で検索されてしまいます。
その理由として、timestamp型で上記のように年月日で記述すると、勝手に00:00:00が補完されるみたいです。

なので、2018年7月1日から2018年7月31日のデータを検索したい場合は、

SELECT * FROM table_name WHERE timestamp_column BETWEEN '2018-07-01' AND '2018-08-01';

とする必要があります。