【发布时间】:2020-04-20 16:57:32
【问题描述】:
MySQL 版本:8.0.18 字符集:utf8mb4 排序规则:utf8mb4_unicode_ci
我正在整理一个将“当前”日期条目转换为 DATE 条目的规则集(因为我们将日期存储为实际的 DATE 数据类型,而不是文本)。
在这样做的过程中,我发现了一些非常奇怪的东西。我想要一个规则集,其中 00-00-2020(例如)代表“现在”。
当我执行这个时:
SELECT date(CONCAT(YEAR(NOW()),'-00-00'));
结果是“0/0/2020”作为 DATE 结果值。
但是,当我在存储过程中执行此操作时:
SET out_result_formatted_date = CONCAT(YEAR(NOW()),'-00-00');
结果始终为“1/1/0001”。注意 out_result_formatted_date 是 DATE 类型。另请注意,如果我将 DATE 放在 CONCAT(存储过程的)前面,结果是相同的。
到底为什么我会从应该是完全相同的代码中得到两个不同的结果?
【问题讨论】: