【问题标题】:Mysql UPDATING statement in datetime日期时间中的 Mysql UPDATING 语句
【发布时间】:2015-02-09 08:36:59
【问题描述】:

我知道这有点奇怪,但请注意如果有人在那里寻找这个......

我有一个 2 表是

tableA
编号 |姓名 | datetime -> 格式为 int(11), varchar(128) datetime()
1 | '富吧' | '2014-08-04 00:53:16''

表B
编号 |姓名 |日期时间 | -> 格式相同
1 | '富吧' |空

使用此语句
UPDATE tableA a inner join tableB b on b.name = a.name SET a.datetime = b.datetime
它说
Error Code: 1292. Truncated incorrect time value: '840:53:16';
什么... :)

如果我使用它自己的格式选择它
select * from tableA a inner join tableB b on b.name = a.name
其节目
编号 |姓名 |日期时间 |id |姓名 |日期时间 |
1 | '富吧' | '2014-08-04 00:53:16'' | 1 | '富吧' |空
难道我做错了什么?? 如果我使用 show create table tableA CREATE TEMPORARY TABLElist_of_in( idint(11) NOT NULL, namevarchar(128) NOT NULL, datetimedatetime NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1

show create table tableB CREATE TEMPORARY TABLElist_of_in( idint(11) NOT NULL, namevarchar(128) NOT NULL, datetimedatetime NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1

顺便说一句,我现在正在创建存储过程,它在我的本地主机中工作
但是当我在服务器上尝试它时,它不工作,6 小时后我发现
这是不工作的部分......

顺便感谢您阅读eheheh :))

【问题讨论】:

  • 将列命名为与数据类型相同。也许不是一个好主意? “40:53:16”是什么“时间”?
  • hehehe 很抱歉它的 '2014-08-04 00:53:16' hehehehe 要编辑它
  • 编辑帖子并包含“显示创建表 tableA”(和 tableB)

标签: mysql stored-procedures


【解决方案1】:

我无法复制您的问题。

我重新创建了您的表,并且当我运行您的查询时,它会将 tableA 的日期时间替换为 tableB 中的空值。我猜你已经为你的数据库中实际发生的事情建立了一个简化模型?如果是这样,那么您制作的模型不再突出问题。

但我确实注意到,您遇到的错误表明一个字段的日期格式与另一个字段不匹配。我会检查这两个字段实际上是日期时间,并且一个实际上不是带有日期的 varchar。

这是用于创建我的测试环境的 sql 转储。如果您运行它(顺便说一句,这将擦除 TableA 和 TableB),然后自己运行查询,它应该会成功。

# Dump of table tableA
# ------------------------------------------------------------

DROP TABLE IF EXISTS `tableA`;

CREATE TABLE `tableA` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(128) DEFAULT NULL,
  `datetime` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

LOCK TABLES `tableA` WRITE;
/*!40000 ALTER TABLE `tableA` DISABLE KEYS */;

INSERT INTO `tableA` (`id`, `name`, `datetime`)
VALUES
    (1,'foobar','2014-08-04 00:53:16');

/*!40000 ALTER TABLE `tableA` ENABLE KEYS */;
UNLOCK TABLES;


# Dump of table tableB
# ------------------------------------------------------------

DROP TABLE IF EXISTS `tableB`;

CREATE TABLE `tableB` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(128) DEFAULT NULL,
  `datetime` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

LOCK TABLES `tableB` WRITE;
/*!40000 ALTER TABLE `tableB` DISABLE KEYS */;

INSERT INTO `tableB` (`id`, `name`, `datetime`)
VALUES
    (1,'foobar',NULL);

/*!40000 ALTER TABLE `tableB` ENABLE KEYS */;
UNLOCK TABLES;

【讨论】:

  • 经过 11 个小时的调试后,我什么也没得到,呵呵,我投票赞成你的答案,因为你的解释是正确的,感谢你的努力,呵呵呵呵……这只是意味着我没有任何错误我会去备份我的所有文件并重新安装我的lampp服务器我最后的手段希望那里有问题哈哈哈.. :)
  • 我想问题是当我将 ubuntu 12.04 升级到 14.04 时发生了一些事情,在重新安装我的 Lampp 后,这个错误不再存在了:(
猜你喜欢
  • 1970-01-01
  • 2020-07-28
  • 1970-01-01
  • 2022-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-11
  • 2023-04-10
相关资源
最近更新 更多