DATE_FORMAT() in MySQL return 侧存储过程中的意外字符串
DATE_FORMAT() in MySQL return unexpected string in side stored procedure
我在存储过程中遇到 date_format()
问题。当我尝试将 datetime
格式化为来自存储过程外部的字符串时,它运行良好 - 如下所示:
SELECT DATE_FORMAT('2021-04-07 23:59:59.999999', "%d %b %Y");
输出为 07 Apr 2021
,符合预期。
但是在存储过程中,它returns 08 Apr 2021
。我认为问题出在 .999999
部分。如果我删除它,那么 date_format()
return 07 Apr 2021
。我该如何解决?
DELIMITER $$
CREATE PROCEDURE `App_Date_Format`(IN pDateTime DATETIME)
BEGIN
SELECT DATE_FORMAT(pDateTime, "%d %b %Y");
END$$
DELIMITER ;
注意:这是我完整存储过程的一部分
您将参数定义为 DATETIME
,因此提供的值是四舍五入的。定义为 DATETIME(6)
:
CREATE PROCEDURE `App_Date_Format`(IN pDateTime DATETIME(6))
BEGIN
SELECT DATE_FORMAT(pDateTime, "%d %b %Y");
END
https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=d1017437fa575d42098b6f18014d9f0f
我在存储过程中遇到 date_format()
问题。当我尝试将 datetime
格式化为来自存储过程外部的字符串时,它运行良好 - 如下所示:
SELECT DATE_FORMAT('2021-04-07 23:59:59.999999', "%d %b %Y");
输出为 07 Apr 2021
,符合预期。
但是在存储过程中,它returns 08 Apr 2021
。我认为问题出在 .999999
部分。如果我删除它,那么 date_format()
return 07 Apr 2021
。我该如何解决?
DELIMITER $$
CREATE PROCEDURE `App_Date_Format`(IN pDateTime DATETIME)
BEGIN
SELECT DATE_FORMAT(pDateTime, "%d %b %Y");
END$$
DELIMITER ;
注意:这是我完整存储过程的一部分
您将参数定义为 DATETIME
,因此提供的值是四舍五入的。定义为 DATETIME(6)
:
CREATE PROCEDURE `App_Date_Format`(IN pDateTime DATETIME(6))
BEGIN
SELECT DATE_FORMAT(pDateTime, "%d %b %Y");
END
https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=d1017437fa575d42098b6f18014d9f0f