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.