我正在尝试将数据从 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