gpt4 book ai didi

mysql - 什么会导致 mysql 日期时间字段保存类似 2015-00-06 01 :36:00 (notice the 0 for month) 的值

转载 作者:行者123 更新时间:2023-11-29 10:43:09 25 4
gpt4 key购买 nike

我遇到一个问题,以下 SQL 行(从 C 程序运行)有时会导致表中出现错误的日期:

更新queue_members SET status=2,idlesince='1500059950',其中id=57206

然后检查表格(注意月份的 00):

mysql> SELECT id, idlesince FROM queue_members WHERE Month(idlesince) = 0 and Year(idlesince) != 0;
...
| 57206 | 2015-00-06 00:38:00 |

当然,C 脚本运行许多这样的 SQL 语句,并且大多数都运行得很好:

更新queue_members SET status=2,idlesince='1500059864',其中id=56294

mysql> SELECT id, idlesince FROM queue_members WHERE id=56294;
...
| 56294 | 2017-07-14 15:40:41 |

虽然我很想知道为什么有些语句会导致问题,而另一些语句看起来几乎相同却不会,但我很好奇为什么 mysql 可以在明确的情况下存储这样的日期(或显示它)无效的?它是如何将日期存储在日期时间字段中从而产生这种日期的?

我正在运行:

% mysql -V
mysql Ver 14.14 Distrib 5.6.33, for debian-linux-gnu (x86_64) using EditLine wrapper

最佳答案

您似乎正在尝试写入时间戳:

更新queue_members SET status=2,idlesince='1500059950'WHERE id=57206

但正如您的评论中所述,您的列的类型为DATETIME。您必须使用 FROM_UNIXTIME 将时间戳转换为正确的 DATETIME 格式。

其实第二次审核后就显得更明显了:

'1500059950'15,然后是 00,然后是 05,等等

  • 15:解释为 YY 所以 2015

  • 00:月份MM00(是的,MySQL允许的)

  • 05:日,转换为 06 但因为小时为 99

等等

关于mysql - 什么会导致 mysql 日期时间字段保存类似 2015-00-06 01 :36:00 (notice the 0 for month) 的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45110883/

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