我需要选择一个日期有记录的记录(范围:表格1998到1999)。我写了似乎工作的声明。为什么?MS Access SQL选择日期范围
SELECT *
FROM Factory
WHERE
(EXTRACT(YEAR FROM date) AS dyear) BETWEEN '1998' AND '1999'
我需要选择一个日期有记录的记录(范围:表格1998到1999)。我写了似乎工作的声明。为什么?MS Access SQL选择日期范围
SELECT *
FROM Factory
WHERE
(EXTRACT(YEAR FROM date) AS dyear) BETWEEN '1998' AND '1999'
运用Year()
功能每行Factory
将是一个显着的性能挑战,如果表中包括几千行。 (实际上,对于较小的表也是一个性能上的挑战,但在这种情况下,您不太可能注意到这种情况。)更有效的方法是索引[date]
字段并使用索引检索来限制数据库引擎的工作量。
SELECT f.*
FROM Factory AS f
WHERE f.date >= #1998-1-1# AND f.date < #2000-1-1#;
只要有可能,请设计您的查询以利用索引检索。这可以显着提高性能。作为一个简单的经验法则:索引检索=好;全表扫描=坏。尽可能避免全表扫描。
为什么不只是'在'1998-01-01'和'1999-12-31''之间的日期? – Kermit
@RCola为什么它不应该工作? – Alex
MS Access显示了一些没有文档的错误。 –