Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
franklima1950
Contributor II
Contributor II

DATA

Tenho um campo que  é uma DATA, supondo que venha no resultado dia 16/03/2022, que é uma QUARTA, eu preciso transformar essa data na próxima SEGUNDA FEIRA(21/03/2022), e todas as datas de um certo cliente tenho que converter pra próxima segunda feira, é possível?

 

 

 

Labels (3)
2 Solutions

Accepted Solutions
LucasBarbosa
Partner - Contributor II
Partner - Contributor II

Creio que você consiga fazer da seguinte forma:

 

Teste:
LOAD
  *,
  WeekDay(NovaData) AS DiaSemanaNovaData;
LOAD
  Cod,
  data,
  WeekDay(data) as DiaSemana,
  If(num(weekday(data)) = 0, data+1,Date((data + 7) - (num(weekday(data))) + 1)) as NovaData
  FROM [lib://AttachedFiles/TesteData.xlsx]
(ooxml, embedded labels, table is Planilha1);

 

Resultado:

LucasBarbosa_0-1647438671078.png

Segue a planilha que usei para testar.

 

Edit: Corrigindo problema caso o dia da semana dê em um domingo.

 

 

View solution in original post

LucasBarbosa
Partner - Contributor II
Partner - Contributor II

Não sei se entendi a pergunta, mas supondo que você queira mudar apenas as datas dos clientes "A" dentro da base anexada, uma das formas de fazer é a seguinte:

 

iF(Cliente = 'A',
    	If(num(weekday(data)) = 0, data+1,Date((data + 7) - (num(weekday(data))) + 1)),
    Date(data)) as NovaData

 

Traduzindo, 

Se o cliente for igual a "A"

Então a operação será realizada(Jogaremos todos para a próxima segunda feira)

Senão a operação não será realizada, logo, continuará com o mesmo valor de antes.

Portanto, o resultado será o seguinte:

LucasBarbosa_0-1647452062660.png

Caso a sua regra inclua mais de um campo (Por exemplo, uma combinação entre Cliente e Cidade), sugiro que antes de iniciar a transformação citada acima, você transforme essa combinação em apenas um campo com o objetivo de diminuir o número de operações lógicas e de operadores relacionais.

 

 

View solution in original post

3 Replies
LucasBarbosa
Partner - Contributor II
Partner - Contributor II

Creio que você consiga fazer da seguinte forma:

 

Teste:
LOAD
  *,
  WeekDay(NovaData) AS DiaSemanaNovaData;
LOAD
  Cod,
  data,
  WeekDay(data) as DiaSemana,
  If(num(weekday(data)) = 0, data+1,Date((data + 7) - (num(weekday(data))) + 1)) as NovaData
  FROM [lib://AttachedFiles/TesteData.xlsx]
(ooxml, embedded labels, table is Planilha1);

 

Resultado:

LucasBarbosa_0-1647438671078.png

Segue a planilha que usei para testar.

 

Edit: Corrigindo problema caso o dia da semana dê em um domingo.

 

 

franklima1950
Contributor II
Contributor II
Author

Entendi, dá certo mesmo! Mas me responde algo, preciso limitar a partir de um outro campo quais datas serão convertidas pra segunda feira, sabe dizer como ficaria a sintaxe? 

LucasBarbosa
Partner - Contributor II
Partner - Contributor II

Não sei se entendi a pergunta, mas supondo que você queira mudar apenas as datas dos clientes "A" dentro da base anexada, uma das formas de fazer é a seguinte:

 

iF(Cliente = 'A',
    	If(num(weekday(data)) = 0, data+1,Date((data + 7) - (num(weekday(data))) + 1)),
    Date(data)) as NovaData

 

Traduzindo, 

Se o cliente for igual a "A"

Então a operação será realizada(Jogaremos todos para a próxima segunda feira)

Senão a operação não será realizada, logo, continuará com o mesmo valor de antes.

Portanto, o resultado será o seguinte:

LucasBarbosa_0-1647452062660.png

Caso a sua regra inclua mais de um campo (Por exemplo, uma combinação entre Cliente e Cidade), sugiro que antes de iniciar a transformação citada acima, você transforme essa combinação em apenas um campo com o objetivo de diminuir o número de operações lógicas e de operadores relacionais.