Как получить данные из базы данных на основе даты и времени, где дается только дата? - PullRequest
0 голосов
/ 26 июня 2019

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

Я даю входные данные в виде строки в виде даты, например: с 20 июня по 22 июня 2009 года, а затем преобразую строку в дату и время, используя следующий код:

string fromDate= "20/06/2019";
string toDate= "22/06/2019";
DateTime OfromDate = DateTime.ParseExact(fromDate, "dd/MM/yyyy", null);
DateTime OtoDate = DateTime.ParseExact(toDate, "dd/MM/yyyy", null);  

затем я передаю дату и время методу по этому запросу, который, я думаю, является проблемой на

     command.CommandText = string.Format("select * from tableDates where TRUNC(DATE_M) BETWEEN TO_DATE('{0}','DD-MON-RRRR') AND TO_DATE('{1}','DD-MON-RRRR')", fromDate, toDate);

примечание. Я пытаюсь получить все данные в период с 20/06/2019 по 22 /06/2019

Ответы [ 2 ]

0 голосов
/ 26 июня 2019

Ваша строка даты имеет формат DD/MM/RRRR, и вы используете модель формата DD-MON-RRRR. Разделители не являются проблемой, но правила Oracle String-to-Date указывают, что:

  • MM совпадений MON или MONTH
  • MON совпадений MONTH
  • MONTH совпадений MON

Не указывается, что MON соответствует MM, поэтому:

select *
from   tableDates
where  TRUNC(DATE_M) BETWEEN TO_DATE('20/06/2019','DD-MON-RRRR')
                     AND     TO_DATE('20/06/2019','DD-MON-RRRR')

Результат:

ORA-01843: not a valid month

Если вы измените модель формата на MM, тогда:

select *
from   tableDates
where  TRUNC(DATE_M) BETWEEN TO_DATE('20/06/2019','DD-MM-RRRR')
                     AND     TO_DATE('20/06/2019','DD-MM-RRRR')

будет работать.

дБ <> скрипка здесь

0 голосов
/ 26 июня 2019

Используйте дату и время, сохраняйте процедуры и передавайте параметры в качестве даты или времени.У Datediff есть много вариантов получения разницы между месяцами и днями года и многое другое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...