Oracle Sysdate como clausula Where
Gostaria de usar a data do sysdate como clausula Where, pois tenho que fazer um relatorio que me traga os registros incluidos no anterior ao dia atual. Assim, posso considerar Sysdate-1?
No caso, não estou conseguindo fazer funcionar com trunc(sysdate)-1.
Seria correto assim?
SELECT
RHMEDI_ATESTADO.CODIGO_CONTRATO MATRIC,
RHPESS_CONTRATO.NOME NOME,
RHMEDI_ATESTADO.DATA_INICIO DT_INICIO,
RHMEDI_ATESTADO.DATA_FIM DT_FIM,
CASE
WHEN RHMEDI_ATESTADO.COD_TP_ATESTADO = '0005' THEN 'LIC MATERNIDADE'
WHEN RHMEDI_ATESTADO.COD_TP_ATESTADO = '0006' THEN 'DOACAO DE SANGUE'
WHEN RHMEDI_ATESTADO.COD_TP_ATESTADO = '0008' THEN 'ATESTADO ATE 15 DIAS'
WHEN RHMEDI_ATESTADO.COD_TP_ATESTADO = '0009' THEN 'AT ACID DO TRABALHO ATE 15 DIAS'
WHEN RHMEDI_ATESTADO.COD_TP_ATESTADO = '0011' THEN 'PRORR LIC MATERNIDADE'
WHEN RHMEDI_ATESTADO.COD_TP_ATESTADO = '0012' THEN 'PANDEMIA CORONAVIRUS'
WHEN RHMEDI_ATESTADO.COD_TP_ATESTADO = '0100' THEN 'LIC PATERNIDADE'
WHEN RHMEDI_ATESTADO.COD_TP_ATESTADO = '0108' THEN 'PRORR LIC PATERNIDADE'
END TIPO_ATESTADO,
RHMEDI_ATESTADO.DT_ULT_ALTER_USUA DT_REGISTRO
FROM
CRHH.RHMEDI_ATESTADO,
MGS.RHPESS_CONTRATO
WHERE
RHPESS_CONTRATO.CODIGO = RHMEDI_ATESTADO.CODIGO_CONTRATO
AND RHMEDI_ATESTADO.COD_TP_ATESTADO <> '0007'
AND RHMEDI_ATESTADO.DT_ULT_ALTER_USUA > TRUNC(SYSDATE)
ORDER BY RHMEDI_ATESTADO.DT_ULT_ALTER_USUA DESC
RHMEDI_ATESTADO.CODIGO_CONTRATO MATRIC,
RHPESS_CONTRATO.NOME NOME,
RHMEDI_ATESTADO.DATA_INICIO DT_INICIO,
RHMEDI_ATESTADO.DATA_FIM DT_FIM,
CASE
WHEN RHMEDI_ATESTADO.COD_TP_ATESTADO = '0005' THEN 'LIC MATERNIDADE'
WHEN RHMEDI_ATESTADO.COD_TP_ATESTADO = '0006' THEN 'DOACAO DE SANGUE'
WHEN RHMEDI_ATESTADO.COD_TP_ATESTADO = '0008' THEN 'ATESTADO ATE 15 DIAS'
WHEN RHMEDI_ATESTADO.COD_TP_ATESTADO = '0009' THEN 'AT ACID DO TRABALHO ATE 15 DIAS'
WHEN RHMEDI_ATESTADO.COD_TP_ATESTADO = '0011' THEN 'PRORR LIC MATERNIDADE'
WHEN RHMEDI_ATESTADO.COD_TP_ATESTADO = '0012' THEN 'PANDEMIA CORONAVIRUS'
WHEN RHMEDI_ATESTADO.COD_TP_ATESTADO = '0100' THEN 'LIC PATERNIDADE'
WHEN RHMEDI_ATESTADO.COD_TP_ATESTADO = '0108' THEN 'PRORR LIC PATERNIDADE'
END TIPO_ATESTADO,
RHMEDI_ATESTADO.DT_ULT_ALTER_USUA DT_REGISTRO
FROM
CRHH.RHMEDI_ATESTADO,
MGS.RHPESS_CONTRATO
WHERE
RHPESS_CONTRATO.CODIGO = RHMEDI_ATESTADO.CODIGO_CONTRATO
AND RHMEDI_ATESTADO.COD_TP_ATESTADO <> '0007'
AND RHMEDI_ATESTADO.DT_ULT_ALTER_USUA > TRUNC(SYSDATE)
ORDER BY RHMEDI_ATESTADO.DT_ULT_ALTER_USUA DESC
No caso, não estou conseguindo fazer funcionar com trunc(sysdate)-1.
Seria correto assim?
Marco Sousa
Curtidas 0
Melhor post
Emerson Nascimento
14/10/2021
tente assim:
pense na possibilidade de criar um cadastro para o tipo de atestado.
geralmente se usa o case para coisas simples, como SIM/NÃO, CANCELADO/ATIVO, onde o campo é apenas uma flag (0/1, T/F, S/N).
SELECT AT.CODIGO_CONTRATO MATRIC, CT.NOME NOME, AT.DATA_INICIO DT_INICIO, AT.DATA_FIM DT_FIM, CASE WHEN AT.COD_TP_ATESTADO = '0005' THEN 'LIC MATERNIDADE' WHEN AT.COD_TP_ATESTADO = '0006' THEN 'DOACAO DE SANGUE' WHEN AT.COD_TP_ATESTADO = '0008' THEN 'ATESTADO ATE 15 DIAS' WHEN AT.COD_TP_ATESTADO = '0009' THEN 'AT ACID DO TRABALHO ATE 15 DIAS' WHEN AT.COD_TP_ATESTADO = '0011' THEN 'PRORR LIC MATERNIDADE' WHEN AT.COD_TP_ATESTADO = '0012' THEN 'PANDEMIA CORONAVIRUS' WHEN AT.COD_TP_ATESTADO = '0100' THEN 'LIC PATERNIDADE' WHEN AT.COD_TP_ATESTADO = '0108' THEN 'PRORR LIC PATERNIDADE' END TIPO_ATESTADO, AT.DT_ULT_ALTER_USUA DT_REGISTRO FROM CRHH.RHMEDI_ATESTADO AT INNER JOIN MGS.RHPESS_CONTRATO CT ON CT.CODIGO = AT.CODIGO_CONTRATO WHERE AT.COD_TP_ATESTADO <> '0007' AND AT.DT_ULT_ALTER_USUA > TRUNC(SYSDATE-1) ORDER BY AT.DT_ULT_ALTER_USUA DESC
pense na possibilidade de criar um cadastro para o tipo de atestado.
geralmente se usa o case para coisas simples, como SIM/NÃO, CANCELADO/ATIVO, onde o campo é apenas uma flag (0/1, T/F, S/N).
GOSTEI 1
Mais Respostas
Marco Sousa
13/10/2021
Boa noite Emerson, tudo bem?
Muito obrigado por responder
Acatei sua dica e alterei o CASE para Decode. Obrigado!
Infelizmente o
e usar o
Muito obrigado por responder
Acatei sua dica e alterei o CASE para Decode. Obrigado!
Infelizmente o
data_ult_alteracao > trunc(sysdate-1)
não funcionou adequadamente pois me retorna as informações de hojee usar o
data_ult_alteracao = trunc(sysdate-1)
o relatorio retorna vazio.tente assim:
pense na possibilidade de criar um cadastro para o tipo de atestado.
geralmente se usa o case para coisas simples, como SIM/NÃO, CANCELADO/ATIVO, onde o campo é apenas uma flag (0/1, T/F, S/N).
SELECT AT.CODIGO_CONTRATO MATRIC, CT.NOME NOME, AT.DATA_INICIO DT_INICIO, AT.DATA_FIM DT_FIM, CASE WHEN AT.COD_TP_ATESTADO = '0005' THEN 'LIC MATERNIDADE' WHEN AT.COD_TP_ATESTADO = '0006' THEN 'DOACAO DE SANGUE' WHEN AT.COD_TP_ATESTADO = '0008' THEN 'ATESTADO ATE 15 DIAS' WHEN AT.COD_TP_ATESTADO = '0009' THEN 'AT ACID DO TRABALHO ATE 15 DIAS' WHEN AT.COD_TP_ATESTADO = '0011' THEN 'PRORR LIC MATERNIDADE' WHEN AT.COD_TP_ATESTADO = '0012' THEN 'PANDEMIA CORONAVIRUS' WHEN AT.COD_TP_ATESTADO = '0100' THEN 'LIC PATERNIDADE' WHEN AT.COD_TP_ATESTADO = '0108' THEN 'PRORR LIC PATERNIDADE' END TIPO_ATESTADO, AT.DT_ULT_ALTER_USUA DT_REGISTRO FROM CRHH.RHMEDI_ATESTADO AT INNER JOIN MGS.RHPESS_CONTRATO CT ON CT.CODIGO = AT.CODIGO_CONTRATO WHERE AT.COD_TP_ATESTADO <> '0007' AND AT.DT_ULT_ALTER_USUA > TRUNC(SYSDATE-1) ORDER BY AT.DT_ULT_ALTER_USUA DESC
pense na possibilidade de criar um cadastro para o tipo de atestado.
geralmente se usa o case para coisas simples, como SIM/NÃO, CANCELADO/ATIVO, onde o campo é apenas uma flag (0/1, T/F, S/N).
GOSTEI 0