----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/70841/ -----------------------------------------------------------
(Updated June 14, 2019, 7:05 a.m.) Review request for hive and Gabor Kaszab. Changes ------- Patch 12 Bugs: HIVE-21576 https://issues.apache.org/jira/browse/HIVE-21576 Repository: hive-git Description ------- Timestamp and date handling and formatting are currently implemented in Hive using (sometimes very specific) Java SimpleDateFormat patterns with both SimpleDateFormat and java.time.DateTimeFormatter, however, these patterns are not what most standard SQL systems use. For example see Vertica, Netezza, Oracle, and PostgreSQL. **Cast...Format** SQL:2016 introduced the FORMAT clause for CAST which is the standard way to do string <-> datetime conversions For example: CAST(<datetime> AS <char string type> [FORMAT <template>]) CAST(<char string> AS <datetime type> [FORMAT <template>]) cast(dt as string format 'DD-MM-YYYY') cast('01-05-2017' as date format 'DD-MM-YYYY') Stuff like this wouldn't need to happen. **New SQL:2016 Patterns** Some conflicting examples: SimpleDateTime: 'MMM dd, yyyy HH:mm:ss' SQL:2016: 'mon dd, yyyy hh24:mi:ss' SimpleDateTime: 'yyyy-MM-dd HH:mm:ss' SQL:2016: 'yyyy-mm-dd hh24:mi:ss' For the full list of patterns, see subsection "Proposal for Impala’s datetime patterns" in this doc: https://docs.google.com/document/d/1V7k6-lrPGW7_uhqM-FhKl3QsxwCRy69v2KIxPsGjc1k/edit **Continued usage of SimpleDateFormat patterns** [Update] This feature will NOT be behind a flag in order to keep things simple for users. Existing Hive functions that accept SimpleDateFormat patterns as input will continue to do so. Please let me know if you disagree with this decision. These are the functions (afaik) affected: from_unixtime(bigint unixtime[, string format]) unix_timestamp(string date, string pattern) to_unix_timestamp(date[, pattern]) add_months(string start_date, int num_months, output_date_format) date_format(date/timestamp/string ts, string fmt) This description is a heavily edited description of IMPALA-4018. Diffs (updated) ----- common/src/java/org/apache/hadoop/hive/common/format/datetime/HiveDateTimeFormatter.java PRE-CREATION common/src/java/org/apache/hadoop/hive/common/format/datetime/HiveJavaDateTimeFormatter.java PRE-CREATION common/src/java/org/apache/hadoop/hive/common/format/datetime/HiveSimpleDateFormatter.java PRE-CREATION common/src/java/org/apache/hadoop/hive/common/format/datetime/HiveSqlDateTimeFormatter.java PRE-CREATION common/src/java/org/apache/hadoop/hive/common/format/datetime/package-info.java PRE-CREATION common/src/test/org/apache/hadoop/hive/common/format/datetime/TestHiveJavaDateTimeFormatter.java PRE-CREATION common/src/test/org/apache/hadoop/hive/common/format/datetime/TestHiveSimpleDateFormatter.java PRE-CREATION common/src/test/org/apache/hadoop/hive/common/format/datetime/TestHiveSqlDateTimeFormatter.java PRE-CREATION common/src/test/org/apache/hadoop/hive/common/format/datetime/package-info.java PRE-CREATION ql/src/java/org/apache/hadoop/hive/ql/exec/FunctionRegistry.java d08b05fb68 ql/src/java/org/apache/hadoop/hive/ql/parse/IdentifiersParser.g 58fe0cd32e ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFCastFormat.java PRE-CREATION ql/src/test/org/apache/hadoop/hive/ql/udf/generic/TestGenericUDFCastWithFormat.java PRE-CREATION ql/src/test/queries/clientpositive/cast_datetime_with_sql_2016_format.q PRE-CREATION ql/src/test/results/clientpositive/cast_datetime_with_sql_2016_format.q.out PRE-CREATION ql/src/test/results/clientpositive/show_functions.q.out 374e9c4fce Diff: https://reviews.apache.org/r/70841/diff/3/ Changes: https://reviews.apache.org/r/70841/diff/2-3/ Testing ------- Thanks, Karen Coppage