AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / user-221041

E.Aigle's questions

Martin Hope
E.Aigle
Asked: 2021-05-12 00:38:20 +0800 CST

Procedimento armazenado para alterar string para datetime no MySQL

  • 0

Este é um seguimento a esta pergunta . Acontece que o driver que estou usando (não posso alterá-lo) não é compatível com valores de carimbo de data/hora. Vamos dizer que está definido que eu tenho que carregar os dados no meu banco de dados MySQL 8.0 como um tipo de string. Não há nenhuma função nativa dentro do software que estou usando para ler no PLC e escrever no banco de dados que pode alterar uma string para um timestamp.

O que estou tentando descobrir agora é como configurar um gatilho que converte a string em um timestamp em insert . Essa ideia me foi sugerida pela linha direta de ajuda do software, mas se você tiver alguma ideia melhor, estou aberto a isso também. Até agora, tenho 2 colunas: uma onde "recebo" a string que é do tipo VARCHAR(30), e outra onde escrevo o valor do timestamp com o trigger.

Essa configuração parece super estúpida para mim porque acabo com 2 colunas com os mesmos dados apenas em formatos diferentes, e uma delas é completamente inútil.

Até agora, minha tabela está assim:

CREATE TABLE `test` (
  `id` mediumint NOT NULL AUTO_INCREMENT,
  `Date_VARCHAR` varchar(30) DEFAULT NULL,
  `Date_TIMESTAMP` timestamp(6) NULL DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=52383 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

E o gatilho é:

DELIMITER $$
CREATE DEFINER = CURRENT_USER TRIGGER `db_test`.`test_BEFORE_INSERT`     
    BEFORE INSERT ON `db_test`.`test` FOR EACH ROW
    BEGIN  
    SET NEW.Date_TIMESTAMP = NEW.Date_VARCHAR ;
    END$$
DELIMITER ;

Existe uma maneira melhor de fazer isso para evitar ter os mesmos dados duas vezes? Eu gostaria de fazer um gatilho que apenas converta os dados e grave tudo em uma coluna em vez da configuração que criei.

Aqui está uma rápida olhada no que eu tenho acontecendo . Eu fiz uma inserção de alguns valores aleatórios, mas na verdade tudo está sendo feito com o plugin datalogger do KEPServerEx.

mysql trigger
  • 1 respostas
  • 420 Views
Martin Hope
E.Aigle
Asked: 2021-05-01 01:25:10 +0800 CST

O que exatamente é a entrada do tipo de dados em um valor DATETIME no MySQL

  • 0

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 DATETIMEque 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 SELECTno 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 DATEe DATETIMEnã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.....

mysql datetime
  • 1 respostas
  • 184 Views

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve