oracle LAST_DAY (sysdate) проблема сравнения - PullRequest
1 голос
/ 12 июля 2011

Предположим, у меня есть столбец Дата с датой 31 июля 2011 года.Я получаю последнюю дату месяца, используя LAST_DAY (sysdate), который возвращает 31-JUL-11.Но когда я делаю простое сравнение, это не дает результата. Я имею в виду, предположим, что tablename.lastdateofmonth = LAST_DAY (sysdate) не дает результата, но если я использую tablename.lastdateofmonth = to_date ('2011/07/31', 'гггг / мм / дд') это дает результат.

Спасибо.

Ответы [ 3 ]

5 голосов
/ 12 июля 2011

последний день делает текущую дату последним днем ​​месяца. однако это держит время. вы должны урезать значения, если вы собираетесь сравнивать их только по дню-месяцу-году. Использование их решит вашу проблему.

tablename.lastdateofmonth = trunc(LAST_DAY(sysdate))
1 голос
/ 12 июля 2011

last_day () сохраняет компонент времени sysdate. Используйте его вместе с trunc () так:

select *
from table_name
where lastdateofmonth = last_day(trunc(sysdate));
1 голос
/ 12 июля 2011

LAST_DAY (sysdate) вернет вам последнюю дату месяца, включая часть времени.

Похоже, что данные в столбце lastdateofmonth содержат только часть даты, а часть imte по умолчанию установлена ​​в 12:00.

Попробуйте использовать это:

tablename.lastdateofmonth = TRUNC(LAST_DAY(sysdate))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...