2011-03-08 9 views
1

2つの日付の間のレコードを秒精度(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

+0

@Hemauloそれはまだ動作しますが、デフォルト時間は "00:00:00"になりますので、日付に追加することができます – JustMe

+0

大きな感謝、私は考えました。問題は、時間を指定していないため、2010-10-15 00:00:00 - 2010-10-15 00:00:00から選択されたということでした。レコードが返されなかった理由は不思議ではありません。 – Hemaulo

関連する問題