2013-04-03 137 views
1

我需要选择一个日期有记录的记录(范围:表格1998到1999)。我写了似乎工作的声明。为什么?MS Access SQL选择日期范围

SELECT * 
FROM Factory 
WHERE 
(EXTRACT(YEAR FROM date) AS dyear) BETWEEN '1998' AND '1999' 
+0

为什么不只是'在'1998-01-01'和'1999-12-31''之间的日期? – Kermit

+0

@RCola为什么它不应该工作? – Alex

+0

MS Access显示了一些没有文档的错误。 –

回答

3

您可以使用YEAR()从日期获得年份。

SELECT * 
FROM Factory 
WHERE YEAR(date) BETWEEN 1998 AND 1999 
1

运用Year()功能Factory将是一个显着的性能挑战,如果表中包括几千行。 (实际上,对于较小的表也是一个性能上的挑战,但在这种情况下,您不太可能注意到这种情况。)更有效的方法是索引[date]字段并使用索引检索来限制数据库引擎的工作量。

SELECT f.* 
FROM Factory AS f 
WHERE f.date >= #1998-1-1# AND f.date < #2000-1-1#; 

只要有可能,请设计您的查询以利用索引检索。这可以显着提高性能。作为一个简单的经验法则:索引检索=好;全表扫描=坏。尽可能避免全表扫描。