Gostaria que alguém me explicasse pq a instrução 1 funciona, e a instrução 2 não funciona. Pra mim simplesmente não faz sentido. Abaixo as instruções SQL em MySQL:
Instrução 1: (funciona!!!)
select data from tabela where data = '2008/02/20'
Instrução 2: (não funciona!!!)
select CAST('2008/02/20' as date) from tabela where CAST('2008/02/20' as date) = '2008/02/20'
EDIT: Também reparei o uso de DATE no site, talvez possa ajudar em futuras buscas.
[/quote]
Olá amigo!
Eu já tinha dado uma olhada nessa documentação que vc mandou… ela vem junto com o MySQL. Mas confesso que não pensei em tentar com “-”, sempre usei “/”.
Fazendo com os “-” como vc falou deu certo. Aliás, tô usando assim agora, muito obrigada.
Mas eu continuo inculcada com o assunto… poxa, nas duas instruções que coloquei não está retornando um DATE e fazendo uma comparação? Então pq em uma funciona e em outra não?! :?:
[quote]
As a convenience, MySQL automatically converts a date to a number if the date is used in a numeric context (and vice versa). It is also smart enough to allow a ?relaxed? string form when updating and in a WHERE clause that compares a date to a TIMESTAMP, DATE, or DATETIME column. (?Relaxed form? means that any punctuation character may be used as the separator between parts. For example, ‘2004-08-15’ and ‘2004#08#15’ are equivalent.) MySQL can also convert a string containing no separators (such as ‘20040815’), provided it makes sense as a date.[/quote]
Creio que este relaxamento permite sua primeira instrução, mas como na segunda instrução você realiza o cast, ocorre o erro de formato.
[]'s
[quote]
As a convenience, MySQL automatically converts a date to a number if the date is used in a numeric context (and vice versa). It is also smart enough to allow a ?relaxed? string form when updating and in a WHERE clause that compares a date to a TIMESTAMP, DATE, or DATETIME column. (?Relaxed form? means that any punctuation character may be used as the separator between parts. For example, ‘2004-08-15’ and ‘2004#08#15’ are equivalent.) MySQL can also convert a string containing no separators (such as ‘20040815’), provided it makes sense as a date
When you compare a DATE, TIME, DATETIME, or TIMESTAMP to a constant string with the <, <=, =, >=, >, or BETWEEN operators, MySQL normally converts the string to an internal long integer for faster comparison (and also for a bit more ?relaxed? string checking). [/quote]
Creio que este relaxamento permite sua primeira instrução, mas como na segunda instrução você realiza o cast, ocorre o erro de formato.
[]'s
EDIT: Desculpe a replicação, apertei o quote à toa