Suppose I have this two queries:
SELECT * FROM payments WHERE created < DATE '1967-01-01'SELECT * FROM payments WHERE created < '1967-01-01'
And created field is a date field.
I would like to know if in query 2) is comparing two dates like in 1) and is not comparing two strings lexicographically.
Thanks!
>Solution :
Mysql treats both formats as dates, not as strings.
As mysql manual on date and time literals say:
Standard SQL requires temporal literals to be specified using a type
keyword and a string. The space between the keyword and string is
optional.DATE ‘str’ TIME ‘str’ TIMESTAMP ‘str’ MySQL recognizes but, unlike
standard SQL, does not require the type keyword. Applications that are
to be standard-compliant should include the type keyword for temporal
literals.
…
MySQL recognizes DATE values in these formats:
As a string in either ‘YYYY-MM-DD’ or ‘YY-MM-DD’ format.