On Thursday, August 11, 2016 at 6:46:09 AM UTC-7, Satyanarayana Gandham 
wrote:
>
> Hi,
>
> Recently, I tried to migrate from mysql gem to mysql2 gem. One different 
> behavior I noticed is the Time(only_time) column. For the saved object, the 
> value is a Time object with date pointing to "2000-01-01" whereas for the 
> new object, the value is a Time object with date pointing to current date. 
> I didn't encounter this when worked with mysql gem(both the cases, it is 
> current date).
>
> Is there a way I can make the time object to be of the same date of new 
> and saved objects?
>
> Here is my output from racksh:
>
> [1] pry(main)> s = Slot.first
> => #<Slot @values={:id=>342, :start=>2000-01-01 09:00:00 +0000, 
> :finish=>2000-01-01 17:00:00 +0000}>
> [2] pry(main)> s_new = Slot.new(start: "09:00:00")
> => #<Slot @values={:start=>2016-08-11 09:00:00 +0000}>
> [3] pry(main)> s_new.start
> => 2016-08-11 09:00:00 +0000
> [4] pry(main)> s.start
> => 2000-01-01 09:00:00 +0000
>
> This is my migration:
>
> Sequel.migration do
>   create_table(:slots) do
>     ...
>     Time :start, only_time: true
>     ...
>   end
> end
>

Ruby doesn't have an object that holds a time without a date.  The 
Time/DateTime classes both only support times with dates.  So you have to 
pick a date to use.

Sequel's default is to use the current date, since I think that makes the 
most sense. The mysql2 driver apparently picks 2000-01-01 as the date 
(https://github.com/brianmario/mysql2/blob/08f21e8ed3f82dc64ddd76c71c8530502f19212b/ext/mysql2/result.c#L1051).
 
 I do not know why they picked that date, maybe for compatibility with 
other products?

I think the best way to fix this is probably adding support for something 
like:

  Sequel::SQLTime.date = Date.new(2000)

which would allow you to set the date used for SQLTime instances.  I'll add 
that before the next release.

Thanks,
Jeremy

-- 
You received this message because you are subscribed to the Google Groups 
"sequel-talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/sequel-talk.
For more options, visit https://groups.google.com/d/optout.

Reply via email to