top of page

Formatar Datas e casas decimais SQL

Atualizado: 26 de jul. de 2023


Alguns exemplos:



Alguns exemplos:


Alguns exemplos:




---tratativas exemplos:


--> Alterar ponto por vírgula:


Entarda: REPLACE(PFUNC.SALARIO, '.', ',') AS 'REMUNERACAO_MENSAL',

Saída: 8115,55

--> Entrada:

CASE

WHEN PFUNCAO.NOME = 'PROFESSOR DE ENSINO SUPERIOR I' THEN CAST(CONVERT(decimal(15, 10), (CEILING(jornadamensal / 60)) / 4.5) AS numeric(15, 2))

WHEN PFUNCAO.NOME = 'PROFESSOR DE ENSINO SUPERIOR II' THEN CAST(CONVERT(decimal(15, 10), (CEILING(jornadamensal / 60)) / 4.5) AS numeric(15, 2))

WHEN PFUNCAO.NOME = 'PROFESSOR DE ENSINO SUPERIOR III' THEN CAST(CONVERT(decimal(15, 10), (CEILING(jornadamensal / 60)) / 4.5) AS numeric(15, 2))

ELSE CAST(CONVERT(decimal(15, 10), (jornadamensal / 60)) / 5 AS numeric(15, 2))

END AS CARGA_HORARIA,


Saída: 40.00



--> FORMAT(PFUNC.DATAADMISSAO, 'dd/MM/yyyy') AS DT_ADMISSAO,

Saída: 09/05/2022


CONVERT(DATE,DATAADMISSAO) as DATAADMISSAO


--> Entrada:

FORMAT(CASE

WHEN PFCOMPL.c011 <> 'NULL' THEN PFUNC.SALARIO * 0.40 + PFUNC.SALARIO

ELSE PFUNC.SALARIO

END, 'C', 'pt-br') AS 'SALARIO_C_GRATIFI',


Saída: R$8.115,55


--> Entrada: REPLACE(CAST(SALARIO / (pfunc.JORNADAMENSAL / 60) AS numeric(15, 2)), '.', ',') AS SALARIO_HORA,


Saída: 31,80



Entrada: FORMAT(CASE

WHEN PFCOMPL.c011 <> 'NULL' THEN PFUNC.SALARIO * 0.40 + PFUNC.SALARIO

ELSE PFUNC.SALARIO

END, 'C', 'pt-br') AS 'SALARIO_C_GRATIFI',


Saída: R$6.359,92



Entrada: CASE


WHEN PFUNC.NOME = 'PROFESSOR DE ENSINO SUPERIOR I' THEN REPLACE(CAST(PFUNC.SALARIO / (PFUNC.JORNADAMENSAL / 60) AS numeric(15, 2)), '.', ',')

WHEN PFUNC.NOME = 'PROFESSOR DE ENSINO SUPERIOR II' THEN REPLACE(CAST(PFUNC.SALARIO / (PFUNC.JORNADAMENSAL / 60) AS numeric(15, 2)), '.', ',')

WHEN PFUNC.NOME = 'PROFESSOR DE ENSINO SUPERIOR III' THEN REPLACE(CAST(PFUNC.SALARIO / (PFUNC.JORNADAMENSAL / 60) AS numeric(15, 2)), '.', ',')

WHEN PFUNC.NOME = 'ORIENT. DE CURSOS - INTERP. DE LIBRAS' THEN REPLACE(CAST(PFUNC.SALARIO / (PFUNC.JORNADAMENSAL / 60) AS numeric(15, 2)), '.', ',')

WHEN PFUNC.NOME = 'ORIENTADOR DE CURSOS' THEN REPLACE(CAST(PFUNC.SALARIO / (PFUNC.JORNADAMENSAL / 60) AS numeric(15, 2)), '.', ',')



ELSE

REPLACE(CAST(PFUNC.SALARIO / (PFUNC.JORNADAMENSAL / 60) *200 AS numeric(15, 2)), '.', ',')

end AS 'SALARIO 200hs',


Saída: 6359,92



Entrada: REPLACE(CAST(PFUNC.SALARIO / (PFUNC.JORNADAMENSAL / 60) *200 AS numeric(15, 2)), '.', ',') AS 'COM VÍRGULA',

CAST(PFUNC.SALARIO / (PFUNC.JORNADAMENSAL / 60) *200 AS numeric(15, 2)) AS 'SEM VÍRGULA',


(PFUNC.SALARIO / (PFUNC.JORNADAMENSAL / 60)) *200 AS TESTE,


Saída:







Neste exemplo, considerando a data de hoje 14/04/2023, a consulta irá retornar férias com data de início maior ou igual a data de hoje - a diferença de "dias de férias ",

e data fim de férias menor que a data do sistema (hoje) + "dias de férias".


Poderia ser apenas getdate() + 30, se os dias de férias fosse fixo em 30.




SELECT


FORMAT(F.DATAINICIO, 'dd/MM/yyyy') AS DATA_INICIO,

FORMAT(F.DATAFIM, 'dd/MM/yyyy') AS DATA_FIM,


CAST((F.DATAFIM - F.DATAINICIO)AS INT)+1 AS DIAS_FERIAS


FROM PFUFERIASPER F (NOLOCK)

INNER JOIN PFUFERIAS E (NOLOCK) ON E.CHAPA=F.CHAPA AND E.FIMPERAQUIS=F.FIMPERAQUIS AND E.CODCOLIGADA=F.CODCOLIGADA

INNER JOIN PFUNC U (NOLOCK) ON U.CHAPA=F.CHAPA AND U.CODCOLIGADA=F.CODCOLIGADA

INNER JOIN PSECAO S (NOLOCK) ON S.CODIGO=U.CODSECAO AND S.CODCOLIGADA=U.CODCOLIGADA

INNER JOIN PFUNCAO C (NOLOCK) ON C.CODIGO=U.CODFUNCAO AND C.CODCOLIGADA=U.CODCOLIGADA


WHERE


/*AND F.DATAINICIO >= GETDATE() AND DATEDIFF(DAY, GETDATE(), F.DATAFIM) > 30*/

F.DATAINICIO >= (GETDATE()-CAST((F.DATAFIM - F.DATAINICIO)AS INT)+1 )

AND F.DATAFIM < GETDATE() + (CAST((F.DATAFIM - F.DATAINICIO)AS INT)+1)



--F.DATAINICIO >=:DE_DT_INICIO_GOZO AND F.DATAINICIO <=:ATÉ_DT_INICIO_GOZO

--ORDER BY F.DATAINICIO, S.DESCRICAO, U.NOME



-----------





Convert(varchar(10),PF.DTPAGTO,103) as DATA_PAGAMENTO,


-----------------


Join entre uma tabela com DATA e retorna período que neste caso, chamarei de período de apuração de ponto. Tenho uma tabela com a data dos fatos (AAFHTFUN) e a tabela com os períodos de início e fim do periodo de apuração (APERIODO)



Tabela APERIODO



Exemplo de Sub selects (Select dentro de um select)


Data Referência é a data do fato ocorrido e através desta data, ele retorna a data inicial e final do período de apuração, ou seja, na primeira linha, a data do fato ocorreu dua 08/02/2023 e será computado no período de apuração que iniciou dia 15 de janeiro e finalizou dia 08 de fevereiro.




Neste exemplo abaixo, a opção de comentário retornará o mês e ano atual.

Por exemplo, considere que hoje é dia 24/05/2023, será retornado dados iguais a este mês e ano.



Já a linha ativa, retornará o mês anterior conforme exemplo:



+ alguns exemplos


Data_Ref_QP pegar a última data do mês anterior

Ano_QP o ano e assim por diante.



bottom of page