RailsのActive Recordのmysqlでマイクロ秒を切り捨てる方法

mysqlでマイクロ秒まで計算してくれるのは嬉しいのですが、保存されるときには切り捨てにされています。

Railsend_of_dayを使うと、.9999になります。

where('start_at <= ? and end_at >= ?', date.beginning_of_day, date.end_of_day)


SELECT  `xxxx`.* FROM `campaigns` WHERE (start_at <= '2019-09-28 15:00:00' and end_at >= '2019-09-29 14:59:59.999999') LIMIT 11

ギリギリまでそれを加えたいのに、加わらないというジレンマが発生します。

この回避方法です。

文字列にします

where('start_at <= ? and end_at >= ?', date.beginning_of_day, date.end_of_day.getutc.to_s)

SELECT  `xxx`.* FROM `campaigns` WHERE (start_at <= '2019-09-28 15:00:00' and end_at >= '2019-09-29 14:59:59 UTC') ORDER BY `campaigns`.`id` ASC LIMIT 1 OFFSET
1

もっといいやり方あると思うので、何かいい方法を知っている方は教えてください!

参考

qiita.com