mysql - 获取日期时间的日期和时间(MySQL 中的错误?)

标签 mysql

运行下面的语句,MySQL 似乎把事情搞混了:

select now(), if(false, date(now()), time(now()));

| 2013-07-24 10:06:21 | 2010-06-21 00:00:00 |

如果用文字字符串替换 if 的第二个参数,则该语句的行为正确:

select now(), if(false, 'Banana', time(now()));

| 2013-07-24 10:06:21 | 10:06:21 |

这是一个错误还是一些非常奇怪的怪癖?

最佳答案

IF 的返回类型必须是包含两个参数类型的数据类型。因此,如果其中一个参数是 DATE,另一个是 TIME,则 IF 的类型将为 DATETIME.

这在简单的示例查询中似乎没有必要,但请考虑如下内容:

SELECT IF(col1, date(col2), time(col2)) AS dt
FROM Table

结果的所有行在 dt 列中必须具有相同的数据类型,即使特定数据将取决于该行中的内容也是如此。

如果您只需要日期或时间,请将其转换为字符串。

关于mysql - 获取日期时间的日期和时间(MySQL 中的错误?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17828561/

相关文章:

MySQL Couting 重复项的重复项

php - 如何比较 mysql 数据库中的 IP 地址?

mysql - ASP.net Core 添加对程序集的引用

java - 我无法使用 Spring Boot 和 JPA 连接到 mysql 数据库

mysql - 无法使用 JSON_CONTAINS 进行搜索

php - 将复选框与相应的输入字段分组

php - 具有多单位支持功能的库存

MySQL 查询返回值属于该组的所有组

php - 使用 phpunit 在 mysql 中测试二进制类型的数据库

mysql - Mysql中整数的255限制是什么意思?