アクセスDBでSQLを使用して、今年の総走行マイル数を取得する必要があります。現在、次のクエリを試していますが、機能していません。
SELECT
SUM(Mileage)
FROM
[Mileage-Expenses]
WHERE
YEAR(DatePurchased) = YEAR(CURRENT_TIMESTAMP)
これを修正する方法はありますか?
に基づくWHERE
句でYEAR(DatePurchased)
は、dbエンジンがテーブル内のすべての行についてその式を評価する必要があります。DatePurchased
インデックスをまだ持っていない場合は、にインデックスを追加しWHERE
、データベースエンジンが計算前に現在の年の行のみを取得できるようにする句を使用すると、パフォーマンスが向上しますSUM(Mileage)
。
SELECT
SUM(Mileage)
FROM
[Mileage-Expenses]
WHERE
DatePurchased >= DateSerial(Year(Date()), 1, 1)
AND DatePurchased < DateSerial(Year(Date()) + 1, 1, 1)
私は長い間MSAccessを使用していませんが、MS Accessがサポートしていないことを覚えている限り、代わりにCURRENT_TIMESTAMP
使用する必要があります。DATE()
NOW()
SELECT
SUM(Mileage)
FROM
[Mileage-Expenses]
WHERE
YEAR(DatePurchased) = YEAR(DATE())