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';
とする必要があります。