2012-07-27 35 views
-1

在NHibernate的+ Oracle中,生成一個查詢NHibernate的得到錯誤的日期時間範圍

SELECT * 
FROM mytbl this_ 
WHERE this_.PRICING_DATE >= :p0 and this_.PRICING_DATE <= :p1 
:p0 = 7/25/2012 12:00:00 AM [Type: DateTime (0)], :p1 = 7/26/2012 12:00:00 AM [Type: DateTime (0)] 

爲什麼這個查詢將返回在7/26/2012數據?我想要的是獲取7/25的數據。

請指教。

+0

你可以舉一個它返回的記錄的例子嗎? – 2012-07-27 13:17:14

+0

我一直以爲你應該通過'2012年7月25日00:00:00'而不是午夜12:00:00,因爲那是午夜,不是午夜,除非orcale和MsSql不一樣 – Rippo 2012-07-27 13:31:43

+0

@Rippo我不知道mySql,但是12:00:00 AM是午夜,而不是中午。它在概念上是在前一天之後的時刻。因爲這個數字是一個瞬間(不是持續時間或時間間隔),所以對於12:00時刻應該落在子午線的哪一側可能會引起混淆。想想這樣,12:01上午不是下午。所以爲了保持一致,我們需要有點不一致。 – Les 2012-07-27 14:36:28

回答

0

這是因爲2012年7月26日是==到2012年7月26日12:00:00 AM。你應該使用<:p1。即便如此,我依稀記得,在午夜12點左右(SQL)有一些小問題。嘗試< =,但讓:p1 = 2012年7月25日下午11:59:59

相關問題