Вы можете делать математику в день, как вы предлагаете.Вот краткий пример (вы можете заменить свой DateTime.Now и правильную строку формата вместо моего жестко закодированного примера):
SELECT TRUNC(TO_DATE('05-DEC-2011 05:31:32 PM', 'DD-MON-YYYY HH12:MI:SS PM'))
+ 11/24 + 10/(24*60) AS MyDate FROM dual;
MYDATE
-------------------------
05-DEC-11 11:10:00 AM
Обратите внимание, как я беру дату ввода, усекаю ее (чтобы получить дату безвремя), а затем добавьте часы и минуты к этой базовой дате.
Вы можете расширить это, чтобы использовать ключевое слово BETWEEN
и получить это:
SELECT * FROM my_table
WHERE CreateDate BETWEEN TRUNC(TO_DATE('05-DEC-2011 05:31:32 PM',
'DD-MON-YYYY HH12:MI:SS PM')) + 11/24 + 10/(24*60) - 1
AND TRUNC(TO_DATE('05-DEC-2011 05:31:32 PM',
'DD-MON-YYYY HH12:MI:SS PM')) + 11/24 + 10/(24*60);
Или, если вывсегда пропускаете DateTime.Now
вы можете просто использовать дату из базы данных:
SELECT * FROM my_table
WHERE CreateDate BETWEEN TRUNC(sysdate) + 11/24 + 10/(24*60) - 1
AND TRUNC(sysdate) + 11/24 + 10/(24*60);