Si vous voulez juste pour affichage pour une raison quelconque, vous pouvez coder en dur le temps dans le masque de format:
select to_char(last_day(sysdate), 'DD-Mon-YYYY "23:59:00"') from dual;
Mais vous avez probablement voulez vraiment comme un objet date, auquel cas vous peut ajouter 23 heures et 59 minutes à la tronqué (minuit) la date, wchi est 1439 des 1440 minutes dans une journée:
select to_char(trunc(last_day(sysdate)) + 1439/1440, 'DD-Mon-YYYY HH24:MI:SS')
from dual;
Ou vous pouvez aller le lendemain et supprimer une minute, que ce soit avec les jours fractionnaires ou avec des intervalles:
select to_char(trunc(last_day(sysdate)) + interval '1' day - interval '1' minute,
'DD-Mon-YYYY HH24:MI:SS') from dual;
En général, si vous travaillez avec des périodes de temps que vous souhaitez inclure jusqu'à 23:59:59, que vous pouvez également faire avec l'une de ces méthodes, mais comme Damien_The_Unbeliever dit dans un commentaire, il est plus facile de comparer avec le début de la période suivante (par exemple < add_months(trunc(sysdate, 'MM'), 1)
. Il est facile de manquer accidentellement une partie de la journée en ne prenant pas correctement en compte le temps, en particulier si vous avez réellement un horodatage plutôt qu'une date.
Il est presque toujours * plus simple * de calculer un point d'extrémité * exclusif * si vous essayez de définir une plage. Par exemple. utilisez le premier jour du mois prochain (facile à calculer) et utilisez juste <<'plutôt que <='. –