Mysql

在 MySQL 中輸入 DATETIME 值的數據類型到底是什麼

  • April 30, 2021

我正在嘗試將數據從 PLC 直接獲取到 MySQL 8.0 數據庫(使用 MySQL Workbench)。我需要知道列的輸入值是什麼數據類型,DATETIME這樣我才能以正確的格式發送。

實際問題:我假設它是字元串,因為當我使用 and 手動輸入值時INSERT,該值必須在“”中。這是我的一個愚蠢的假設嗎?

當我的 PLC 的輸出是字元串並且我的列的數據類型是DATETIME,我從SELECT數據庫中讀取的內容是完全錯誤的:‘1905-07-13 00:00:00’ 而不是 ‘2021-04-30 08 :51:30’。但是,如果我將它寫在設置為 type 的 DB 列中VARCHAR,它會正確寫入,但不適用於我的下一個應用程序。因此,如果我將列更改為DATETIME,一切正常,但這是非常不切實際的,每次我需要添加到數據庫時,我都可以更改列的數據類型。

我在這裡做的另一個假設是輸入數據類型是導致此問題的原因,但現在是這樣,DATE並且DATETIME我正在使用的驅動程序不支持,所以也許我只是一廂情願地認為這會工作。

注意:如果它不是主題,請遷移它,不確定它是否最適合這里或堆棧溢出……

第二個注意事項:我發現完成這項工作的唯一方法是作為 VARCHAR 寫入數據庫,然後在我的應用程序中使用 CONVERT(,DATETIME) ,但是我不能只在我的數據庫中寫入日期感覺很奇怪由於某些原因…..

您必須以字元串文字或數字文字的形式提供值。

MySQL 8.0 Reference Manual / … / Date and Time Literals中描述了可能的格式。

或者,您可以提供任何自定義格式的數據,並在 INSERT 查詢中使用相應的解析模式對其應用STR_TO_DATE() 。

**DEMO**

引用自:https://dba.stackexchange.com/questions/290788