From: akr@... Date: 2019-07-16T14:38:34+00:00 Subject: [ruby-core:93815] [Ruby master Feature#16005] A variation of Time.iso8601 that can parse yyyy-MM-dd HH:mm:ss Issue #16005 has been updated by akr (Akira Tanaka). akr (Akira Tanaka) wrote: > Also, I'm still not certain that what Time object to be generated > when time zone interval is not given. PostgreSQL has SET TIME ZONE command to set a time zone for a session. https://www.postgresql.org/docs/11/datatype-datetime.html#DATATYPE-TIMEZONES "Always UTC" seems not appropriate. However, I feel that SQL timestamp without time zone interval is dangerous for communication between RDB and Ruby because it is ambiguous at Autumn DST change (and other time zone offset change). For example, 1999-10-31 01:30:00 in US/Pacific can be interpreted as 1999-10-31 08:30:00 UTC and 1999-10-31 09:30:00. If the method is expected to be used internally (not for human interaction), using timestamp with time zone interval is the right way. So, I think supporting timestamp without time zone interval is not important. ---------------------------------------- Feature #16005: A variation of Time.iso8601 that can parse yyyy-MM-dd HH:mm:ss https://bugs.ruby-lang.org/issues/16005#change-79683 * Author: matsuda (Akira Matsuda) * Status: Open * Priority: Normal * Assignee: * Target version: ---------------------------------------- Let me propose a String to Time conversion method that can parse "yyyy-MM-dd HH:mm:ss" format, which is very much similar to `Time.iso8601`, but delimits the date part and the time part with a space character. This format is defined as the "timestamp string" literal in SQL 92 standard: http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt (see P. 90) and so this format is very widely used as the default datetime / timestamp literal for major existing RDBMS implementations. Oracle https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/Literals.html#GUID-8F4B3F82-8821-4071-84D6-FBBA21C05AC1 SQL Server https://docs.microsoft.com/en-us/sql/odbc/reference/develop-app/date-time-and-timestamp-literals?view=sql-server-2017 PostgreSQL https://www.postgresql.org/docs/11/datatype-datetime.html#id-1.5.7.13.19.7.2 MySQL https://dev.mysql.com/doc/refman/8.0/en/datetime.html SQLite3 https://www.sqlite.org/lang_datefunc.html In order to handle this conversion in Ruby on Rails framework, we define our own String => Time conversion method https://github.com/rails/rails/blob/b4c715fe/activemodel/lib/active_model/type/helpers/time_value.rb#L62-L76 and Time => String conversion for now, https://github.com/rails/rails/blob/b4c715fe/activesupport/lib/active_support/core_ext/time/conversions.rb#L7-L59 and I think it's nicer if we had them in the language level with a faster implementation. As for the method name, maybe we can name it `Time.sql92`, `Time.sql`, `Time.parse_sql92` or whatever, or maybe we can add an option to `Time.iso8601` if it could be regarded as a variation of `Time.iso8601`? (https://en.wikipedia.org/wiki/ISO_8601#cite_note-30) -- https://bugs.ruby-lang.org/ Unsubscribe: