You're right, that's the way to do now. In addition, flooring date to first moment in month shifts back to last month if timezone is relatively before to UTC so I had to mutate(datetime = timezone('UTC', datetime)) in order to get the right time when converting dataset to tibble.
@cassiopagnoncelli I've never tested this very thoroughly since I usually convert everything to just dates to avoid these kinds of issues. The timezone of the connection can also have an impact. I think the interaction between lubridate, dbplyr, and timezones is something that could use some love.