gpt4 book ai didi

mysql - DATE_ADD 在生产服务器上返回 NULL,在开发中工作

转载 作者:行者123 更新时间:2023-11-29 00:11:58 26 4
gpt4 key购买 nike

开发是本地主机运行版本 5.6.16,生产是 5.1.73-cll

此查询的 DATE_ADD 在生产环境中返回 NULL,但在开发过程中完全符合我的要求(向 game_time 列添加 90 分钟),game_time 列是一个包含以下格式的时间的字符串:'21 :00'。这是查询:

SELECT TIME(game_time),
DATE_ADD(TIME(game_time),
INTERVAL 90 MINUTE),
TIME(NOW())
FROM games

这是怎么回事?我做错了什么?

我知道时间应该在 TIMESTAMP 或 TIME 中,但我正在处理别人的代码,我自己并不是从头开始的。

我还注意到 TIME() 返回不同的东西,在开发中,TIME('21:00') 返回 21:00:00.000000,在生产中我只得到 21:00:00

设法四处走动,虽然不是很漂亮,但很管用。

SEC_TO_TIME(TIME_TO_SEC(TIME(game_time))+5400)

最佳答案

您最好使用与生产服务器相同的版本进行开发:

您的旧版本会将您的 TIME 值转换为日期,因为它是无效日期,它将变为 NULL,请参阅手册章节 Conversion Between Date and Time Types

相关部分如下:

Before 5.6.4, MySQL converts a time value to a date or date-and-time value by parsing the string value of the time as a date or date-and-time. This is unlikely to be useful. For example, '23:12:31' interpreted as a date becomes '2023-12-31'. Time values not valid as dates become '0000-00-00' or NULL.

编辑:

要获得具有所需结果的 TIME 值,您可以使用 ADDTIME .这可能有效:

SELECT TIME(game_time),
ADDTIME (TIME(CONCAT(CURDATE(), ' ', game_time))),
'01:30:00'),
TIME(NOW())
FROM games

未经测试,因为我已经没有这么旧的 MySQL 版本了。

关于mysql - DATE_ADD 在生产服务器上返回 NULL,在开发中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24649896/

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