1

アクセスDBでSQLを使用して、今年の総走行マイル数を取得する必要があります。現在、次のクエリを試していますが、機能していません。

   SELECT 
      SUM(Mileage) 
   FROM 
      [Mileage-Expenses] 
   WHERE 
      YEAR(DatePurchased) = YEAR(CURRENT_TIMESTAMP)

これを修正する方法はありますか?

4

2 に答える 2

3

に基づく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)
于 2013-01-22T15:47:26.447 に答える
1

私は長い間MSAccessを使用していませんが、MS Accessがサポートしていないことを覚えている限り、代わりにCURRENT_TIMESTAMP使用する必要があります。DATE()NOW()

   SELECT 
      SUM(Mileage) 
   FROM 
      [Mileage-Expenses] 
   WHERE 
      YEAR(DatePurchased) = YEAR(DATE())

http://office.microsoft.com/en-gb/access-help/use-current-date-and-time-in-calculations-HP001098479.aspx

于 2013-01-22T15:24:36.430 に答える