2011-03-08 61 views
1

我想要做的是在兩個日期之間選擇第二個精度的記錄(在YYYY-MM-DD HH:II:SS和YYYY-MM-DD HH:II:SS之間)。包含日期和時間的字段採用TIMESTAMP格式。我甚至無法按日期選擇記錄。簡單的選擇在Firebird中失敗

查詢

SELECT * 
FROM INVOICE 
WHERE CAST(INVOICE.WHENINVOICED AS DATE) = CAST('2010-10-15' AS DATE) 
ORDER BY INVOICE.WHENINVOICED ASC 

返回任何記錄,並沒有錯誤。該日期存在記錄。

回答

4
SELECT * FROM INVOICE 
WHERE WHENINVOICED 
BETWEEN '2010-01-01' AND '2010-10-15' 
ORDER BY WHENINVOICED ASC 

您不需要投射類型。 WhenInvoiced是一個日期類型的課程專欄?

+0

嗯,WHENINVOICED是一個時間戳,正如我在我的文章中寫的。完整定義是WHENINVOICED時間戳(D_DATE)。如果我在FlameRobin中查看錶格數據,我可以看到存儲日期和時間。 – Hemaulo 2011-03-08 09:35:15

+0

@Hemaulo它仍然有效,但它的默認時間爲:「00:00:00」,所以你可以直接添加到日期 – JustMe 2011-03-08 09:37:02

+0

非常感謝,我明白了。問題是我沒有指定時間,因此選擇是2010-10-15 00:00:00 - 2010-10-15 00:00:00。難怪爲什麼沒有返回記錄。 – Hemaulo 2011-03-08 09:42:11