你可以按照你的建議在日期進行數學運算。這裏有一個簡單的例子(可以替代你的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);
有沒有辦法避免'TRUNC'? – CoolArchTek
@CoolArchTek當然。只需省略日期的時間部分即可。或者甚至可以使用具有特定時間的DateTime對象(上午11:10)作爲它的一部分。但是,如果你打算使用'DateTime.Now',你需要用你想要使用的特定時間替換(在調用時)捕獲的時間。這可以通過'TRUNC()'或一個不捕獲時間的格式字符串。 –