2017-09-14 3 views
1

アクセスデータベースの4つの日付フィールドを比較し、最新の値とadatumの日付差をparkdauerに設定しようとしています。同じ月に日付がある行であれば問題ありません。月が異なる場合、日付の比較は機能しません

strSQL = "UPDATE Steuerungsboard 
      SET parkdauer = DateDiff('d', [kspausgang], [adatum]) 
      WHERE FORMAT(kspausgang, 'dd/MM/yyyy') >= FORMAT(iausgang, 'dd/MM/yyyy') 
      And FORMAT(kspausgang, 'dd/MM/yyyy') >= FORMAT(aausgang, 'dd/MM/yyyy') 
      And FORMAT(kspausgang, 'dd/MM/yyyy') >= FORMAT(gausgang, 'dd/MM/yyyy');" 
CurrentDb.Execute strSQL, FailonError 

ありがとうございました!

+1

計算値を格納するのは正規化です。計算された値でクエリを作成するのではなく、そのようにするのはなぜですか? –

答えて

5

FORMATのものをすべて削除すると正常に動作します。

FORMATの問題は実際にアルファベット順に日付を比較していることです。これはさまざまな理由で間違っています。

"UPDATE Steuerungsboard 
      SET parkdauer = DateDiff('d', [kspausgang], [adatum]) 
      WHERE kspausgang >= Nz(iausgang) 
      And kspausgang >= Nz(aausgang) 
      And kspausgang >= Nz(gausgang);" 
+0

フォーマットがないと、フィールドは更新されません。これは実際にどのように私がそれを始めなければならなかったかです。 –

+1

これは有効な日付フィールドであることを前提とした正しい方法です。書式を '' YYYY/MM/DD ''に変更するとアルファベット順に進むことができますが、私のアプローチがうまくいかなかったら根本的な問題があります。 –

+0

助けてくれてありがとう。根本的な問題が何であるかについてのアイデアはありますか?それらはすべてDateフィールドですが、NULLでもかまいません。もちろん、彼らはアルファベット順に比較されている場合、彼らは年から始める必要があります、私はそれを考えなかった。 –

関連する問題