Clipper On Line • Ver Tópico - MySQL - Domingo de páscoa

MySQL - Domingo de páscoa

Discussão sobre SQL

Moderador: Moderadores

 

MySQL - Domingo de páscoa

Mensagempor JoséQuintas » 22 Abr 2021 16:46

Quase igual ao Harbour.

Em Harbour

FUNCTION DomingoDePascoa( nAno )

   LOCAL nA, nB, nC, nD, nE, nF, nG, nH, nI, nK, nL, nM, nMes, nDia

   nA   := nAno % 19
   nB   := Int( nAno / 100 )
   nC   := nAno % 100
   nD   := Int( nB / 4 )
   nE   := nB % 4
   nF   := Int( ( nB + 8 ) / 25 )
   nG   := Int( ( nB - nF + 1 ) / 3 )
   nH   := ( 19 * nA + nB - nD - nG + 15 ) % 30
   nI   := Int( nC / 4 )
   nK   := nC % 4
   nL   := ( 32 + 2 * nE + 2 * nI - nH - nK ) % 7
   nM   := Int( ( nA + 11 * nH + 22 * nL ) / 451 )
   nMes := Int( ( nH + nL - 7 * nM + 114 ) / 31 )
   nDia := ( ( nH + nL - 7 * nM + 114 ) % 31 ) + 1

   RETURN Stod( StrZero( nAno, 4 ) + StrZero( nMes, 2 ) + StrZero( nDia, 2 ) )


Em MySQL

CREATE FUNCTION ze_DomingoDePascoa( nAno INT )
RETURNS DATE
BEGIN
   DECLARE nA, nB, nC, nD, nE, nF, nG, nH, nI, nK, nL, nM, nMes, nDia INT;
   DECLARE cData DATE;

   SET nA   = Mod( nAno, 19 );
   SET nB   = floor( nAno / 100 );
   SET nC   = Mod( nAno, 100 );
   SET nD   = floor( nB / 4 );
   SET nE   = Mod( nB, 4 );
   SET nF   = floor( ( nB + 8 ) / 25 );
   SET nG   = floor( ( nB - nF + 1 ) / 3 );
   SET nH   = Mod( 19 * nA + nB - nD - nG + 15, 30 );
   SET nI   = floor( nC / 4 );
   SET nK   = Mod( nC, 4 );
   SET nL   = Mod( 32 + 2 * nE + 2 * nI - nH - nK, 7 );
   SET nM   = floor( ( nA + 11 * nH + 22 * nL ) / 451 );
   SET nMes = floor( ( nH + nL - 7 * nM + 114 ) / 31 );
   SET nDia = Mod( nH + nL - 7 * nM + 114, 31 ) + 1;
   SET cData = CONCAT( LPAD( nAno, 4, '0' ), '-', + LPAD( nMes, 2, '0' ), '-', LPAD( nDia, 2, '0' ) );

   RETURN cData;
END;


mysql.png
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

MySQL - Domingo de páscoa

Mensagempor JoséQuintas » 22 Abr 2021 16:50

Está aí uma coisa interessante....

Como compilo com -w3 -es2, isso obriga a declarar variáveis.
Ficou praticamente pronto pro MySQL.

Tá aí mais um bom motivo pra acostumar a compilar com -w3 -es2.
Mesmo que o Harbour permita compilar diferente, não é comum deixar de declarar variáveis.

Nota:
Parece que a minha ida e vinda de Visual Basic, depois -w3 -es2, e agora MySQL, parece que tudo se encaixou direitinho.
É como se, sem querer, eu tivesse feito um curso de programação, pra reaprender.

Ou... como o Itamar diz: é sempre bom aprender mais de uma linguagem.
A gente pode pegar o estilo de cada uma, e melhorar nossos fontes.
É olhar o que está na frente do nariz kkkk

Igual agora, quando comparei o fonte Harbour com o fonte MySQL.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

MySQL - Domingo de páscoa

Mensagempor JoséQuintas » 22 Abr 2021 16:58

Também lembra um pouco a criação de classes/métodos do Harbour.

É primeiro declarar a função, e depois colocar o fonte da função.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

MySQL - Domingo de páscoa

Mensagempor JoséQuintas » 22 Abr 2021 17:14

O que aprendemos neste post:

programador 1:
- MySQL é muito complicado, cheio de ponto e vírgula, muito diferente

programador 2:
- Uia... declara variáveis igual no Harbour
- Uia... declara usando DECLARE, igual no Harbour pra declarar array
- Uia... RETURN igual no Harbour
- Uia... declara a função e depois coloca rotina, igual no Harbour pra classes
- Uia... Mod() pra resto da divisão, igual no Harbour
- Só falta aprender mais alguns detalhes, parece que estou com meio caminho andado.

Uma diferença entre programador "novo" e programador "velho", é que para os novos tudo é desafio, vão em frente sempre.
Já o programador velho, enxerga só a parte ruim e/ou defeitos.

Na verdade, o programador velho tem problemas pra enxergar de perto.
Só precisa de óculos, pra voltar a enxergar o que está na frente do nariz.

De uns tempos pra cá eu tenho feito muito isso.
E sempre aproveito pra indicar alguns óculos... kkkk
Os mesmos óculos que me fizeram enxergar melhor.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

MySQL - Domingo de páscoa

Mensagempor JoséQuintas » 23 Abr 2021 21:34

Terça de carnaval mais fácil, já que é baseada na anterior.

CREATE FUNCTION ze_tercadecarnaval( nAno INT )
RETURNS DATE
BEGIN
   DECLARE dData DATE;

   SET dData = DATE_SUB( ze_domingodepascoa( nAno ), INTERVAL 47 DAY );

   RETURN dData;
END;
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes




Retornar para SQL

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 5 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro