2011-03-08 58 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