[ruby-core:93778] [Ruby master Feature#16005] A variation of Time.iso8601 that can parse yyyy-MM-dd HH:mm:ss

[email protected]
Newsgroups gmane.comp.lang.ruby.core
Message-ID <redmine.journal-79431.20190715060709.005ea0f56c2b85e2@ruby-lang.org>
Issue #16005 has been updated by matsuda (Akira Matsuda).


How about respecting local timezone with `Z`, and doing the UTC without `Z`?

----------------------------------------
Feature #16005: A variation of Time.iso8601 that can parse yyyy-MM-dd HH:mm:ss
https://bugs.ruby-lang.org/issues/16005#change-79431

* 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: <mailto:[email protected]?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.