RailsのActive Recordのmysqlでマイクロ秒を切り捨てる方法
mysqlでマイクロ秒まで計算してくれるのは嬉しいのですが、保存されるときには切り捨てにされています。
Railsのend_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
もっといいやり方あると思うので、何かいい方法を知っている方は教えてください!