MySQL CAST为DATE

时间:2014-10-02 17:08:06

标签: mysql sql date casting

我试图了解在MySQL中为DATE类型转换值的原因。以下是我尝试过的一些事情:

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

我尝试的所有内容似乎都将其转换为null如果它无效,或者如果它是有效日期则返回字符串的日期部分。我甚至尝试过斜杠和其他格式的日期,结果相同。

使用DATE(expr)功能和CAST(expr AS DATE)

之间有什么区别?
  

DATE(expr):提取日期或日期时间表达式expr的日期部分。

     

CAST(expr AS type)CAST()函数采用任何类型的表达式并生成指定类型的结果值,类似于CONVERT()

同样,可以通过TIME(expr)CAST(expr AS TIME)询问相同的问题。

1 个答案:

答案 0 :(得分:30)

检查MySQL 5.6 CAST()CONVERT()的源代码调用相同的内部函数Item_date_typecastDATE()也调用Item_date_typecast

总之 DATE(expr)函数与CAST(expr AS DATE)之间没有区别

参考文献:

https://github.com/mysql/mysql-server/blob/5.6/sql/sql_yacc.yy

https://github.com/mysql/mysql-server/blob/5.6/sql/item_create.cc