MySQL: ¿Hay alguna diferencia entre CAST y DATE?

0
0

Tratando de entender el uso de la función DATE y CAST y haciendo algunos ejercicios para ver si devuelven valores diferentes:

SELECT CAST('3' AS DATE);
-- null

SELECT CAST(3 AS DATE);
-- null

SELECT CAST('2014-07-01 19:00:01' AS DATE);
-- 2014-07-01

SELECT DATE('2014-07-01 19:00:01');
-- 2014-07-01

SELECT CAST('2014-07-01' AS DATE);
-- 2014-07-01

SELECT DATE('2014-07-01');
-- 2014-07-01

SELECT CAST('2014-07-50' AS DATE);
-- null

SELECT DATE('2014-07-50');
-- null

SELECT DATE(''), CAST('' AS DATE), DATE(0), CAST(0 AS DATE);
-- null, null, 0000-00-00, 0000-00-00

 

Ambas devuelven el mismo resultado y mirando el código fuente de MySQL (solo para estar seguros de que funcionan igual) en la versión 5.6 CAST() y CONVERT() llaman a la misma función interna Item_date_typecast

En conclusión no hay diferencia entre DATE(expr) y CAST(expr AS DATE)

Refs:

https://github.com/mysql/mysql-server/blob/5.6/sql/sql_yacc.yy#L9518
https://github.com/mysql/mysql-server/blob/5.6/sql/item_create.cc#L5851

  • You must to post comments
An error occurred while importing content. Error: Class HTML_QuickForm_text does not have a constructor, so you cannot pass any constructor arguments