gpt4 book ai didi

mysql - 获取日期转换 MySQL 时出错

转载 作者:行者123 更新时间:2023-11-29 06:35:28 25 4
gpt4 key购买 nike

我创建了一个为某种目的而定义的用户,但逻辑失败了。那基本上是使用一些逻辑添加日期,最后返回日期时间作为该函数的返回值。

为了简单起见,我展示了错误部分。我的代码是

CREATE FUNCTION `BIZZ_fnMergeDate`(
) RETURNS VARCHAR(1000)
BEGIN

DECLARE v VARCHAR(1000);

SET v = STR_TO_DATE('08/06/2014 06:00 PM', '%c/%e/%Y %H:%i');

RETURN '';

END //

DELIMITER ;

这只是为了举例而不是实际代码。

执行无误。但是当它被调用时会抛出以下错误

Error Code: 1292. Truncated incorrect datetime value: '08/06/2014 06:00 PM' 0.000 sec

但是当这个特定的行

选择 STR_TO_DATE('08/06/2014 06:00 PM', '%c/%e/%Y %H:%i');

我在外面作为一个单独的查询运行,它运行良好。

我不明白为什么它在函数内不起作用。看起来很奇怪。请帮忙解决这个问题。

最佳答案

http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-format

您可能需要更改格式字符串以考虑日期/时间格式的 PM 部分:

 '%c/%e/%Y %l:%i %p'

应该可以解决问题。

此外,存储过程直到运行时才会抛出运行时错误,即使智能编译器有可能在编译时抛出它们,因为它们基于常量。这是一种令人讨厌的说法,即在您运行存储的函数之前,MySQL 无法告诉您犯了这样的错误。

要回答您的问题“我如何将其转换为 12 AM/PM 格式”,您需要了解以下内容。 STR_TO_DATE() 将字符串转换为内部 DATETIME 数据类型。这些有很多优点。它们紧凑、可搜索等。如果您尝试显示此类数据类型或将其隐式转换为文本字符串,您会得到类似以下格式的内容:

2014-08-06 18:00:00 

如果您希望将 DATETIME 呈现为其他格式,例如 12 am/pm 格式,您需要使用 DATE_FORMAT() 来实现。

对于我想你想要的操作

DATE_FORMAT(whatever_date, '%c/%e/%Y %l:%i %p')

会成功的。在您的代码中,这变成了

SET v = DATE_FORMAT(STR_TO_DATE('08/06/2014 06:00 PM', '%c/%e/%Y %l:%i %p'), '%c/%e/%Y %l:%i %p');

这有点奇怪,因为它将 12 am/pm 格式转换回相同的格式。但它应该为您指明正确的方向。

关于mysql - 获取日期转换 MySQL 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25161177/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com