Azelha Postado Setembro 16, 2017 Denunciar Share Postado Setembro 16, 2017 Pretendo que o campo a que chamo DatMes seja igual ao campo Data (A ideia é formatar a data para mês a fim de efectuar busca por meses). Dei uma vista de olhos pelos exemplos e não estou a conseguir (Tvz nem seja com Trigger) Create trigger tr_DatMes after insert on Servicos for each row set DataMes = Datas; ando em torno disto mas não está a dar Obrigado. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Markus Magnus Postado Setembro 16, 2017 Denunciar Share Postado Setembro 16, 2017 Para fazer a formatação é tranquilo é só usar o comando DATE_FORMART(). Para atualizar os valores de DatMes uma vez um UPDATE da conta do recado e depois o seu sistema de encarregado de preencher os registros novos. Se você precisa fazer essa operação pelo Banco de Dados o negócio é a Triger mesmo. Mas dando um passo atrás e vendo o problema de outro ângulo. O que você precisa é fazer um SELECT pelo mês? Então não precisa nem criar o campo DatMes só faz assim. SELECT * FROM `suatabela` WHERE DATE_FORMAT(Data, '%Y-%m') = '2017-09'; Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Denis Courcy Postado Outubro 14, 2017 Denunciar Share Postado Outubro 14, 2017 Em 16/09/2017 at 09:50, Markus Magnus disse: Então não precisa nem criar o campo DatMes só faz assim. SELECT * FROM `suatabela` WHERE DATE_FORMAT(Data, '%Y-%m') = '2017-09'; Fazendo desta forma (usando função na representação de um campo e comparando-o com um literal) você corre um grande risco de que sua busca vire um TABLE SCAN, ou seja ela não usará índices e poderá demorar muito. Eu substituiria a função pelo LIKE e, melhor ainda, pelo BETWEEN . Exemplo: SELECT * FROM `suatabela` WHERE `data` LIKE "2017-09%"; ou SELECT * FROM `suatabela` WHERE `data` BETWEEN "2017-09-01" AND "2017-09-30"; Desta forma você aproveitará todo o potencial de seus índices. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Azelha
Pretendo que o campo a que chamo DatMes seja igual ao campo Data (A ideia é formatar a data para mês a fim de efectuar busca por meses).
Dei uma vista de olhos pelos exemplos e não estou a conseguir (Tvz nem seja com Trigger)
Create trigger tr_DatMes after insert on Servicos
for each row
set DataMes = Datas;
ando em torno disto mas não está a dar
Obrigado.
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.