MySQL CAST 作为日期

标签 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): Extracts the date part of the date or datetime expression expr.

CAST(expr AS type): The CAST() function takes an expression of any type and produces a result value of a specified type, similar to CONVERT()

同样的,同样的问题可以用 TIME(expr)CAST(expr AS TIME) 来询问。

最佳答案

查看 MySQL 5.6 的源代码 CAST()CONVERT() 调用相同的内部函数 Item_date_typecast, DATE () 也调用了 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

关于MySQL CAST 作为日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26165882/

相关文章:

javascript - 使用 HTML、Javascript、MySQL 和 PHP 组合提交表单时出错

date - 如何在 Elm 中以格林威治标准时间显示当前时区偏移量

c++ - 如何在 boost 中获取当前的 UTC 日期?

java - Java 中基于时间的逻辑单元测试

mysql - 带有 MySQL 的可移植 SpringMVC 应用程序

php - 如何在 php 中从 mysql 获取下一个结果(在特定 ID 之后)

php - mysql_fetch_row() 不是有效的结果资源

SQL Server 条件排序依据

sql - "ORA-00922: missing or invalid option"创建表时

PHP MySQL Group BY 有问题