MySQL Workbench - Table 数据导入向导将所有日期时间对象写入 0000-00-00 00:00:00

MySQL Workbench - Table Data Import Wizard writing all datetime objects as 0000-00-00 00:00:00

我在 MariaDB ('10.1.37-MariaDB') 服务器上使用 MySQL Workbench 8.0。

我正在尝试使用 Table 数据导入向导 将 3 个示例值导入 table。以下是 CSV 格式的示例:

emp_id,Event,Event_start_time,Event_end_time,
example,shift,"2020/11/6 0:00:00","6/11/2020 23:59",
example,lunch,"2020/14/06 13:00:00","2020/14/06 13:30:00",
example,break,"2020/14/06 10:10:00","2020/14/06 10:30:00",

在导入过程中,每个值都正确显示,除了日期时间字段(Event_start_timeEvent_end_time),它在 运行 之后显示为 '0000-00-00 00:00:00' a select声明。

我尝试了以下格式,none 似乎有效:

以下案例成功:

但我需要能够包含业务逻辑的秒数。

更糟糕的是,当我使用相同的向导将 table(具有现有日期时间值)导出到 .csv,然后尝试重新导入时,所有值都加载为 '0000-00-00 00:00:00'.由于我正在为其他人开发解决方案,我想 minimize/avoid MySQL 尽可能多地编写脚本。我做错了什么?

您的日期似乎是 YYYY/DD/MM HH:MI:SS 格式,从 MySQL 的角度来看这是无效的。您需要将它们转换为 YYYY-MM-DD HH:MI:SS 格式,以便数据库可以正确识别它们。

如果您的数据位于 CSV 文件中,一个简单的选项是 LOAD DATA INFILE syntax 进行输入预处理。根据您显示的示例数据,这应该如下所示:

load data infile 'myfile.csv'
into mytable (emp_id, event, @event_start_time, @event_end_time)
fields terminated by ',' optionally enclosed by '"'
ignore 1 lines
set 
    event_start_time = str_to_date(@event_start_time, '%Y/%d/%m %H:%i:%s'),
    event_end_time   = str_to_date(@event_end_time,   '%Y/%d/%m %H:%i:%s')

您可能需要调整报表选项 - 可能还有目标日期格式 - 以适应您的实际使用情况。

我写错了值。

2020-11-06 0:00:00 (Y-M-D) 正确。 2020-14-06 0:00:00 (Y-D-M) 不正确