Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Erro ao salvar formato "datetime" no SQL Server Olá pessoal, Tive uma certa dificuldade em resolver um probleminha ao submeter um formulário contendo campo DateTime (conforme imagem anexa) e salvar no banco SQL Server, pois o mesmo apresentava a seguinte mensagem de erro: SQLSTATE[22007]: [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]A conversão de um tipo de dados varchar em um tipo de dados datetime resul...
RK
Erro ao salvar formato "datetime" no SQL Server  
Olá pessoal,

Tive uma certa dificuldade em resolver um probleminha ao submeter um formulário contendo campo DateTime (conforme imagem anexa) e salvar no banco SQL Server, pois o mesmo apresentava a seguinte mensagem de erro:

SQLSTATE[22007]: [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]A conversão de um tipo de dados varchar em um tipo de dados datetime resultou em um valor fora do intervalo."


O registro é enviado ao banco no formato "yyyy-mm-dd hh:ii:ss", porém no caso do SQL Server o registro deve ser enviado no formato "yyyy-dd-mm hh-ii-ss", então resolvi o problema de todos os formulários do sistema alterando a classe de modelo, apenas incluindo o seguinte método onBeforeStore conforme listado abaixo:

  1. <?php
  2. ...
  3. public function __construct($id NULL$callObjectLoad TRUE)
  4.     {
  5.         parent::__construct($id$callObjectLoad);
  6.         parent::addAttribute('id');
  7.         parent::addAttribute('trem');
  8.         parent::addAttribute('os');
  9.         parent::addAttribute('ts_importacao');
  10.         parent::addAttribute('ts_meta_entrada_pera');
  11.         parent::addAttribute('ts_meta_inicio');
  12.         parent::addAttribute('ts_meta_fim');
  13.         parent::addAttribute('meta_vagao_hora');
  14.         parent::addAttribute('meta_peso_medio');
  15.         parent::addAttribute('meta_ton_hora');
  16.         parent::addAttribute('ts_entrada_pera');
  17.         parent::addAttribute('ts_inicio');
  18.         parent::addAttribute('ts_fim');
  19.         parent::addAttribute('ts_saida_pera');
  20.         parent::addAttribute('real_vagao_hora');
  21.         parent::addAttribute('real_peso_medio');
  22.         parent::addAttribute('real_ton_hora');
  23.         parent::addAttribute('obs');
  24.         parent::addAttribute('produto_id');
  25.         parent::addAttribute('status_composicao_id');
  26.         parent::addAttribute('origem_id');
  27.         parent::addAttribute('destino_id');
  28.     }
  29.     
  30.     
  31.     public function onBeforeStore($object)
  32.     {
  33.         $object->ts_meta_fim TDateTime::convertToMask($object->ts_meta_fim'yyyy-mm-dd hh:ii:ss''yyyy-dd-mm hh:ii:ss');
  34.     }
  35. ...
  36. ?>


Esse método altera o formato do registro antes de ser submetido ao banco.

Espero que possa ajudar aqueles que enfrentarem a mesma dificuldade.

Curso completo Meu Negócio Pronto
Use para si, ou transforme em um negócio: Inclui aulas e códigos-fontes
Gestor de conteúdo (SITE) + Loja Virtual (E-Commerce) + Emissor de Notas para infoprodutos


Meu negócio pronto Quero me inscrever agora!

Comentários (1)


HT

neste link tem outra opção também.

www.adianti.com.br/forum/pt/view_3432?manipulacao-de-campos-tdate-ut