You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@spark.apache.org by "peng bo (JIRA)" <ji...@apache.org> on 2019/05/06 08:00:01 UTC

[jira] [Created] (SPARK-27638) date format yyyy-M-dd comparison isn't handled properly

peng bo created SPARK-27638:
-------------------------------

             Summary: date format yyyy-M-dd comparison isn't handled properly 
                 Key: SPARK-27638
                 URL: https://issues.apache.org/jira/browse/SPARK-27638
             Project: Spark
          Issue Type: Bug
          Components: SQL
    Affects Versions: 2.4.2
            Reporter: peng bo


The below example works with both Mysql and Hive, however not with spark.

{code:java}
mysql> select * from date_test where date_col >= '2000-1-1';
+------------+
| date_col   |
+------------+
| 2000-01-01 |
+------------+
{code}

The reason is that Spark casts both sides to String type during date and string comparison for partial date support. Please find more details in https://issues.apache.org/jira/browse/SPARK-8420.

Based on some tests, the behavior of Date and String comparison in Hive and Mysql:
Hive: Cast to Date, partial date is not supported
Spark: Cast to Date, "partial date" is supported by defining certain date string parse rules. Check out {{str_to_datetime}} in https://github.com/mysql/mysql-server/blob/5.5/sql-common/my_time.c

Here's 2 proposals:
a. Follow Mysql parse rule, but some partial date string comparison cases wouldn't be supported as well 
b. Cast String value to date, if it passes use date.toString, original string otherwise.




--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@spark.apache.org
For additional commands, e-mail: issues-help@spark.apache.org