Add support for casting DATE values as Time objects. (:cast_dates_as_times => true) - #1012
Add support for casting DATE values as Time objects. (:cast_dates_as_times => true)#1012joe07734 wants to merge 9 commits into
Conversation
|
This is awesome! Do you have time to also ensure this works for Prepared Statements? Start with adding the same unit test with a statement, it's possible no further work is needed beyond that. |
|
Glad you dig it. I'll add the prepared statements test(s) in a bit. |
|
Added and tested. |
|
Usually I'd squash to merge rather than keeping the history of little-edit-commits, but to preserve the two authors, would you squash down to two commits? I suggest one with the main thrust of work and the other with the fixups to get it upstreamed. |
|
It's fine by me if you squash the merge. I'm unclear how I'd squash it in the pull request, is that something you can explain? |
|
Closing -- the feature is real (mixed
Separately: every other cast option mysql2 has at the C level exists because the C layer has performance leverage Ruby-space doesn't ( result.each { |row| row['date_col'] = row['date_col'].to_time }If there's still appetite for shipping this as a first-class option, I'd want it to construct at plain local midnight with no timezone math involved, so the calendar date is guaranteed stable regardless of |
This patch adds a new query option to cast mysql DATE result values as ruby Time objects.
At Bandcamp we've been using this patch (and the other) in our fork of the mysql2 gem since the beginning. I made this patch because we use DATETIME columns in almost all our tables, but occasionally we'll use DATE. With this patch we don't have to care about mixed results.
This is a default for all our queries:
I've been meaning to make these two pull requests since forever. We've had years of experience with them and think they're useful. If you have any questions about how Bandcamp's Linux/MySQL/Ruby stack works, just ask.