time_zone_options_for_select values use full zone name?

I’m curious about something I noticed with time_zone_options_for_select. The existing implementation sets up a lambda to convert the zones into something usable by options_for_select. That lambda looks like:

convert_zones = lambda { |list| list.map { |z| [ z.to_s, z.name ] } }

z.to_s returns the Rails TimeZone name. Are these standard names for other systems? They do not seem to be. Is there a logical reason we don’t do something like this instead?

convert_zones = lambda { |list| list.map { |z| [ z.tzinfo.identifier, z.name ] } }

This uses the TZ identifier as the value in the select list instead of the Rails TimeZone name. As far as I can see from ActiveSupport::TimeZone, the TZ identifier would work as well as the Rails TZ name.

My problem is this. I’m storing the TZ returned from a TZ select into a field in a Postgres database. I would “like” to be able to use that TZ in Postgres queries but the Rails TimeZone seem to be non-standard and unsupported by Postgres directly. Postgres either expects a full zone name (tzinfo.identifier) or a zone abbreviation:http://www.postgresql.org/docs/9.2/static/datatype-datetime.html#DATATYPE-TIMEZONES