2

目标表有一个名为的列updated并设置为:

Name: updated
Type: timestamp
Attributes: on update CURRENT_TIMESTAMP
Null: No
Default: CURRENT_TIMESTAMP
Extra: ON UPDATE CURRENT_TIMESTAMP

源数据在 CSV 中,其中updated每一行的字段都是空白的,例如

id,item_name,updated,quantity
1,car,,4
2,truck,,5
3,chair,,5

使用 PHPMyAdmin 导入后,我希望看到该updated列填充了执行导入时的当前日期/时间,但是,我得到了所有0000-00-00 00:00:00

MySQL 版本:5.5.30。这个结果与 MyISAM 和 InnoDB 相同。

4

3 回答 3

1

那是因为提供了该字段。它以空字符串的形式提供,这与NULL默认值不同。

0当转换为数值时,空字符串将被转换为。0格式化为日期的时间戳是0000-00-00 00:00:00.

您可以UPDATE table SET updated=NOW()在导入后运行(如果您始终导入完整集)或从 CSV 中删除整个列。

于 2013-08-28T12:28:19.573 回答
1

你如何在 phpmyadmin 中更新 SET?

对于上述列,将 CSV 中更新列的每个值分配为“NULL”。然后将 csv 导入的日期添加到 mySQL。

我注意到的一件奇怪的事情是在列中定义错误。即使有一个空表,它也告诉我 TIMESTAMP 的默认值不能是 CURRENT_TIME。为了解决这个问题,我在桌子上敲了三下头,将类型更改为 datetime,保存,然后重新编辑,并允许将类型更改为 TIMESTAMP。

于 2013-10-08T16:04:50.677 回答
0

以下步骤适用于将时间戳设置为 NULL。1. 使列的默认值 - 更新为 NULL(无论如何,您希望时间戳为空) 2. 在 csv 文件中键入 NULL 而不是将字段保持为空白

此方法也可用于自动增量

于 2020-03-09T11:34:12.330 回答