created_at, updated_at and MSSQL

Hello,

I am running into a little issue. There is a considerable time
difference between the time that the console is giving me and the time
I am seeing in the created_at and updated_at column in the DB. The
difference is about 5 hours.

I don't think the problem is in the DB, but I could be wrong.

Am I missing something obvious? Any clues?

check timezone settings in your environment configs

The value in the db should be UTC, so may be correct, dependent on
where you are.

Colin

Thanks, the time_zone value in environment.rb is the reason this is
happening.

The value in the db should be UTC, so may be correct, dependent on
where you are.

Thanks Colin,

I am in the US, EST. UTC is 5 hours ahead of me (rake time:zones:all).
For a multiple time zone application I understand that having UTC
would be "the" option. Is there a reason I am not aware of why I
should still use UTC for a single time zone application?

So there is never any ambiguity about timestamps in the database. For
example, suppose you move to a server in another timezone, it can get
very messy if you have timestamps in EST or whatever happens to be
your local timezone today. By keeping all timestamps in the db in UTC
you will always know what they mean. Normally Rails will do the
conversion to local time for you so the fact that it is UTC in the db
is not something you need normally worry about.

Colin

So there is never any ambiguity about timestamps in the database. For
example, suppose you move to a server in another timezone, it can get
very messy if you have timestamps in EST or whatever happens to be
your local timezone today. By keeping all timestamps in the db in UTC
you will always know what they mean.

I understand the benefits of UTC, however...

Normally Rails will do the
conversion to local time for you so the fact that it is UTC in the db
is not something you need normally worry about.

This is the reason why I noticed. I have to display on screen the date
and time from updated_at and I saw that while my local time was around
4:00 PM the screen was displaying around 9:00 PM. In other words,
there is no 'conversion' going on. I don't know if it makes a
difference but when I display the values I am not displaying the full
value of updated_at, I have to break it down in 2 values, date and
time, and I am using strftime to do the job. Should I be using
something different and/or converting the values to local time first
somehow?

Use created_at.localtime.strftime( .... )

Colin

Use created_at.localtime.strftime( .... )

Couldn't have been any easier. Thanks Colin.