após atualizar pegar dta inclusão converter em mês e inserir na tbl

bom dia!

no formulário existe o campo sm_dta_simula onde é inserido automaticamente a data da inclusão, gostaria de pegar o mes dessa data e salva no campo da mesma tabela em outro post ja a rotina era pegar o valor do campo ja existe, tentei adaptar o codigo e não funcionou alguma dica? segue codigo

$cSql = "select sm_dta_simula from simulador WHERE sm_id_simulador = ".{sm_id_simulador};
sc_lookup(dataset, $cSql);
$mes_simula = {dataset[0][0]};

[glo_mes_simula] = substr($mes_simula,5,2);

$cUpdate = “UPDATE simulador SET sm_mes_atualizacao = '”.[glo_mes_simula]." WHERE sm_id_simulador = ".{sm_id_simulador};
sc_exec_sql($cUpdate);
sc_commit_trans();

A Tabela simulador é a tabela principal do formulário?

sim

Então não precisa fazer select nem update nos eventos o próprio formulário já executa essas querys, o que precisa é extrair o mês da data e movê-lo para a coluna no evento onBeforeInsert.

Pergunto? Você sabe trabalhar com Triggers no Banco?

não trabalho, poderia dar uma dica de como seria?

Nesse caso é mais fácil resolvermos pelo php mesmo.

Mas seria interessante se aperfeiçoar em SQL.

No Evento onBeforeInsert:

 {sm_mes_atualizacao} = date("m", strtotime({sm_dta_simula}); 

Caso sm_dta_simula possa ser alterado na edição do registro no formulário você deverá também executar o mesmo código no evento onBeforeUpdate.

ok, vou testar e retorno

não funcionou,
não sei se isto tem a ver o formato da sm_dta_simula é 2017-11-17
observe que faltou um parentese na sua ideia

{sm_mes_atualizacao} = date(“m”, strtotime({sm_dta_simula}));

Eu tinha respondido pelo celular, fez com a correção do parenteses?

sim executei e não inseriu,

copie seus codigos aqui
e informe o evento que esta usando.

desculpe
agora funcionou, não tinha sincronizado o campo no formulario
no entanto está inserindo o valor 12 e não 11 como desejado

o codigo {sm_mes_atualizacao} = date(“m”, strtotime({sm_dta_simula}));
no evento onBeforeInsert

é o que esta vindo em sm_dta_simula.

quando visualizo os dados está na tabela no formato 2017-11-17
tipo date

o código esta correto.

teste seu código original…
{sm_mes_atualizacao} = substr({sm_dta_simula},5,2);

não funcionou!

fiz um ajuste na sua sugestão {sm_mes_atualizacao} = date(“m”, strtotime({sm_dta_simula}));

e assim funciona {sm_mes_atualizacao} = date(“m”, strtotime({sm_dta_simula}))-1;

por mim tá resolvido! agradeço a ajuda

uma pergunta básica, posso reabri o topico
surgiu uma duvida porque o codigo

{sm_mes_atualizacao} = date(“m”, strtotime({sm_dta_simula}));

mostra um mes dia 12 sendo que a dta gravada no branco é 2017-11-17?

Se o assunto permanece o mesmo pode reabrir sim.

reaberto em função de uma duvida

porque mostra um mes 12 sendo que a dta gravada no branco é 2017-11-17?

{sm_mes_atualizacao} = date(“m”, strtotime({sm_dta_simula}));

adaptei o codigo para gravar o mes por extenso

{sm_mes_atualizacao} = date(“F”, strtotime({sm_dta_simula}));
e gerou December

alguem poderia explicar? agradeço a ajuda