2014-02-07 21 views
-1

在我的應用程序中,我使用日期(存儲爲日期時間)的方式只使用日期部分。 對於今天發佈的發票,我用下面的(正常工作):日期時間 - 檢查昨天的數據(SQLCe)

WHERE DATEADD(D, 0, DATEDIFF(D, 0, IssuedOn))=DATEADD(D, 0, DATEDIFF(D, 0, GETDATE()))"; 

但是對於發票昨天發出 - 天當前日期之前?我試圖減去這些,並檢查結果我1但沒有奏效。

感謝您的幫助

回答

1

這是你需要什麼,因爲你使用的是SQL服務器2005年或更早:

WHERE 
IssuedOn >= DATEADD(D, 0, DATEDIFF(D, 1, GETDATE())) 
and IssuedOn < DATEADD(D, 0, DATEDIFF(D, 0, GETDATE())) 

它可以這樣縮短代替:

WHERE 
IssuedOn >= DATEDIFF(D, 1, GETDATE()) 
and IssuedOn < DATEDIFF(D, 0, GETDATE()) 

請記住標記版本和RDBMS

+0

正如我所說,它是SQL Ce。 – KhDonen

+0

它的工作;)Thanky你! – KhDonen

0

如果你想索引必須使用一個機會,不列上施加任何作用。你(今天)的條件將被寫成:

WHERE IssuedOn >= DATEADD(day, 0 + DATEDIFF(day, '20000101', CURRENT_TIMESTAMP), '20000101') 
    AND IssuedOn < DATEADD(day, 1 + DATEDIFF(day, '20000101', CURRENT_TIMESTAMP), '20000101') 

和昨天:

WHERE IssuedOn >= DATEADD(day, -1 + DATEDIFF(day, '20000101', CURRENT_TIMESTAMP), '20000101') 
    AND IssuedOn < DATEADD(day, 0 + DATEDIFF(day, '20000101', CURRENT_TIMESTAMP), '20000101') 
+0

說這不支持在SQLCE中。 – KhDonen

+0

現在它說日期是未知的類型。 – KhDonen

+0

啊,'DATE'數據類型不可用。我沒有使用CE,你可以測試最新版本嗎? –