Select Firebird中的简单选择失败

Select Firebird中的简单选择失败,select,timestamp,firebird,Select,Timestamp,Firebird,我要做的就是选择两个日期之间的记录,精确到秒(在YYYY-MM-DD HH:II:SS和YYYY-MM-DD HH:II:SS之间)。包含日期和时间的字段采用时间戳格式。我甚至不能按日期选择记录 询问 SELECT * FROM INVOICE WHERE CAST(INVOICE.WHENINVOICED AS DATE) = CAST('2010-10-15' AS DATE) ORDER BY INVOICE.WHENINVOICED ASC 不返回任何记录,也不返回任何错误。记录存在于

我要做的就是选择两个日期之间的记录,精确到秒(在YYYY-MM-DD HH:II:SS和YYYY-MM-DD HH:II:SS之间)。包含日期和时间的字段采用时间戳格式。我甚至不能按日期选择记录

询问

SELECT *
FROM INVOICE
WHERE CAST(INVOICE.WHENINVOICED AS DATE) = CAST('2010-10-15' AS DATE)
ORDER BY INVOICE.WHENINVOICED ASC
不返回任何记录,也不返回任何错误。记录存在于此日期

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

您不需要强制转换类型。WhenInvoiced当然是一个日期类型的列?

嗯,WhenInvoiced是一个时间戳,正如我在帖子中所写的。完整的定义是语音时间戳(D_日期)。如果我在FlameRobin中查看表数据,我可以看到有存储的日期和时间。@Hemaulo它仍然可以工作,但它将获得默认时间:“00:00:00”,因此您可以将其添加到dateBig谢谢,我明白了。问题是我没有指定时间,因此选择时间假定为2010-10-15 00:00:00-2010-10-15 00:00:00。难怪记录没有被返回。@Hemaulo如果你这样做了,那么:cast('2010-05-05 22:22'作为时间戳)