Подтвердить что ты не робот

Как получить последний день месяца с определенной даты?

Например, данная дата 04/04/1924, и я хочу узнать последний день февраля 1924 года.

Я придумал add_month, но, похоже, он не является гибким, если у меня есть другой заданный месяц из источника данных

Любые хорошие идеи?

4b9b3361

Ответ 1

У Oracle есть функция last_day():

SELECT LAST_DAY(to_date('04/04/1924','MM/DD/YYYY')) from dual;

SELECT LAST_DAY(ADD_MONTHS(to_date('04/04/1924','MM/DD/YYYY'), -1)) from dual;

SELECT LAST_DAY(ADD_MONTHS(to_date('04/04/1924','MM/DD/YYYY'), -2)) from dual;

Результаты:

April, 30 1924 00:00:00+0000

March, 31 1924 00:00:00+0000

February, 29 1924 00:00:00+0000

Используйте Add_Months() в своей дате, чтобы получить соответствующий месяц, а затем примените last_day().

Ответ 2

запрос inpl sql для получения первого дня и последнего дня месяца:

первый день:

select to_date(to_char(LAST_DAY(sysdate),'YYYYMM'),'YYYYMM')  from dual;

Последний день:

select LAST_DAY(to_date(to_char((sysdate),'YYYYMM'),'YYYYMM'))  from dual;

Ответ 3

Это покажет вам последний день месяца

SELECT  Max(LAST_DAY(ADD_MONTHS(SYSDATE, -2)) + level)
FROM    dual
CONNECT BY
    level <= LAST_DAY(ADD_MONTHS(SYSDATE, -1)) - LAST_DAY(ADD_MONTHS(SYSDATE, -2))

вы можете заменить системную дату тем, что вам нужно, с to_date ('04/04/1924 ',' MM-DD-YYYY ')

SELECT  Max(LAST_DAY(ADD_MONTHS(to_date('04/04/1924','MM-DD-YYYY'), -2)) + level)
FROM    dual
CONNECT BY
    level <= LAST_DAY(ADD_MONTHS(to_date('04/04/1924','MM-DD-YYYY'), -1)) - LAST_DAY(ADD_MONTHS(to_date('04/04/1924','MM-DD-YYYY'), -2))

или просто

select LAST_DAY(ADD_MONTHS(to_date('04/04/1924','MM-DD-YYYY'), -2)) from dual;

Ответ 4

чтобы получить выбранный месяц и год в последний день:

SELECT TO_CHAR (LAST_DAY (TO_DATE (: X_THE_MONTH || '/01/' ||: X_THE_YEAR, 'MM/DD/YYYY')), 'dd') FROM DUAL

Ответ 5

если вы хотите узнать, окончательно ли установлена ​​ваша дата

SELECT
case when
TO_DATE('19240430','YYYYMMDD') = LAST_DAY(TO_DATE('04/04/1924','MM/DD/YYYY'))
THEN 1 ELSE 0 END LAST_MOUNTH_DAY FROM DUAL

Ответ 6

Получить первую и последнюю дату месяца Просто измените цифру месяца, чтобы получить первую и последнюю дату месяца.

 select
  to_date('01/'|| '07/' || to_char(sysdate, 'YYYY'), 'dd/mm/yyyy') first,
  last_day(to_date('01/'|| '07/' || to_char(sysdate, 'YYYY'), 'dd/mm/yyyy')) last
  from  dual

Результат:

first         last
-------------------------- 
01/02/2017  28/02/2017