Необходимо получить записи из БД на текущую дату (без учета времени)

Я написал ниже запрос, чтобы получить записи:

Select * 
  from Scf_Invoice i 
 where cast(i.inv_Acceptance_Date as date) = TO_DATE('2018-12-18', 'YYYY-MM-DD');

Но я не получаю результата, даже если есть 2 записи для данной даты. Я думаю, это тоже время учитывает. Когда я делаю

Select * 
  from Scf_Invoice i 
 where cast(i.inv_Acceptance_Date as date) > TO_DATE('2018-12-18', 'YYYY-MM-DD');

Я получаю результаты, но хочу, чтобы они были с параметром '='. Что мне следует изменить в моем запросе?

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
1
0
35
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Используйте усечение, чтобы получить день

  trunc(i.inv_Acceptance_Date) =

The TRUNC (date) function returns date with the time portion of the day truncated to the unit specified by the format model fmt. The value returned is always of datatype DATE, even if you specify a different datetime datatype for date. If you omit fmt, then date is truncated to the nearest day.

Select * 
from Scf_Invoice i 
where trunc(i.inv_Acceptance_Date) = TO_DATE('2018-12-18', 'YYYY-MM-DD');

Большое спасибо. Проблема решена на 50%. Теперь он дает мне правильный результат в SQLDeveloper. Но когда я пытаюсь запустить его из приложения Spring Boot Application, возникает ошибка. Вызвано: org.eclipse.persistence.exceptions.JPQLException: Описание исключения: синтаксический анализ ошибки [Выберите i из ScfInvoice i, где trunc (i.invAcceptanceDate) = to_date ('2018-12-18', 'YYYY-MM-DD' )]. [33, 99] Выражение не является допустимым условным выражением.

Java Programmer 18.12.2018 07:22

@JavaProgrammer показывает ошибку и то, как вы ее выполняете в коде, вы можете пропустить пробел или опечатку

user7294900 18.12.2018 07:24

@JavaProgrammer что такое Select i ? Вы имеете ввиду i.columnName?

user7294900 18.12.2018 07:27

ScfInvoiceRepository invoiceRepository; String invoiceQuery = "Выберите i из ScfInvoice i, где trunc (i.invAcceptanceDate) = TO_DATE ('" + currentBusinessDate + "', 'ГГГГ-ММ-ДД')"; Список <ScfInvoice> invoiceList = invoiceRepository.executeQuery (invoiceQuery); Это мой код. Я написал собственный запрос для своего класса сущности (ScfInvoice), и currentBusinessDate - это сегодняшняя дата.

Java Programmer 18.12.2018 07:30

@JavaProgrammer вы не изменили приведение к усечению в коде

user7294900 18.12.2018 07:32

Проблема решена. Проблема заключалась в использовании функций SQL в запросе JPQL. Я изменил свой запрос на «Выбрать i из ScfInvoice i, где func ('TRUNC', i.invAcceptanceDate) = func ('to_date', '2018-12-18', 'YYYY-MM-DD')». Теперь все работает нормально. Большое спасибо. Вы очень помогли.

Java Programmer 18.12.2018 07:47
Select * 
  from Scf_Invoice i 
 where trunc(i.inv_Acceptance_Date) = TO_DATE('2018-12-18', 'YYYY-MM-DD');

или

Select * 
  from Scf_Invoice i 
 where trunc(i.inv_Acceptance_Date) = trunc(sysdate);

для получения данных, равных текущей дате

Другие вопросы по теме