簡體   English   中英

MySQL Workbench - 表數據導入向導將所有日期時間對象寫入 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。

我正在嘗試使用表數據導入向導將 3 個示例值導入表中。 以下是 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 ),在運行select語句后顯示為'0000-00-00 00:00:00'

我嘗試了以下格式,但似乎都不起作用:

  • "2020/11/6 0:00:00"
  • 2020/11/6 0:00:00
  • 2020/11/06 00:00:00
  • 2020-11-06 00:00:00

以下案例成功:

  • 2020-11-06 0:00

但我需要能夠為業務邏輯包含秒數。

更糟糕的是,當我使用相同的向導將表(具有現有的 Datetime 值)導出到.csv ,然后嘗試重新導入時,所有值都加載為'0000-00-00 00:00:00' 在為其他人開發解決方案時,我想盡可能減少/避免 MySQL 腳本。 我究竟做錯了什么?

您的日期似乎是YYYY/DD/MM HH:MI:SS格式,從 MySQL 的角度來看是無效的。 您需要將它們轉換YYYY-MM-DD HH:MI:SS格式,以便數據庫能夠正確識別它們。

如果您的數據在 CSV 文件中,一個簡單的選項是帶有輸入預處理的LOAD DATA INFILE語法 根據您顯示的示例數據,這應該如下所示:

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 (YMD)正確的。 2020-14-06 0:00:00 (YDM)不正確

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM