Estou tentando obter dados de um PLC diretamente em um banco de dados MySQL 8.0 (usando MySQL Workbench). Eu preciso saber qual tipo de dados é o valor de entrada para uma coluna definida para DATETIME
que eu possa enviar no formato correto.
Pergunta real: suponho que seja string, porque quando insiro valores manualmente usando e INSERT
, o valor deve estar em ' '. É uma suposição estúpida da minha parte?
Quando a saída do meu PLC é uma string e o tipo de dados da minha coluna é DATETIME
, o que eu li de a SELECT
no meu banco de dados está completamente errado: '1905-07-13 00:00:00' em vez de '2021-04-30 08 :51:30'. No entanto, se eu escrevê-lo na coluna DB definida como type VARCHAR
, ele será escrito corretamente, mas não poderá ser usado no meu próximo aplicativo. Portanto, se eu alterar a coluna para DATETIME
, tudo funcionará muito bem, mas isso é super impraticável e posso alterar o tipo de dados da minha coluna toda vez que precisar adicionar ao banco de dados.
Outra suposição que estou fazendo aqui é que o tipo de dados de entrada é o que está causando esse problema, mas como está agora DATE
e DATETIME
não é suportado pelo driver que estou usando, então talvez seja apenas uma ilusão da minha parte que isso trabalhar em tudo.
Nota: Migre isso se estiver fora do tópico, não tinha certeza se era o melhor ajuste aqui ou estouro de pilha ...
Segunda Nota: A única maneira que encontrei para fazer isso funcionar é escrever no banco de dados como um VARCHAR e depois usar CONVERT(,DATETIME) no meu aplicativo, mas é estranho que não possa simplesmente escrever uma data no meu banco de dados por algum motivo.....
Você deve fornecer o valor como literal de string ou como literal numérico.
Os formatos possíveis são descritos no Manual de Referência do MySQL 8.0 / ... / Literais de Data e Hora .
Alternativamente, você pode fornecer os dados em qualquer formato personalizado e aplicar STR_TO_DATE() a eles na consulta INSERT com o padrão de análise de acordo.
DEMO