2016-11-07 27 views
0

ある日付が別の日付よりも大きいかどうかを確認しようとしています。これは私が使用している公式です:Qliksense日付比較エラー

=if(
Date(PYMT_DT, 'MM/dd/yyyy') >= Date($(Var_StartDate), 'MM/dd/yyyy') 
AND 
Date(PYMT_DT, 'MM/dd/yyyy') <= Date($(Var_EndDate), 'MM/dd/yyyy') 
,1,0) 

PYMT_DTは私のクエリのフィールドです。 Var_StartDateとVar_EndDateは変数です。

数式は常に0を返します。ただし、数式に日付を直接入力すると正しく動作します。

のは、例えば、これらの値を使用してみましょう:

PYMT_DT = 10/21/2016 
Var_StartDate = 10/20/2016 
Var_EndDate = 10/30/2016 

私に1を与える必要がありますが、私の代わりに0を取得します。ただし、PYMT_DTを実際の日付の値に置き換えた場合、正しい結果が得られます。

=if(
Date('10/21/2016', 'MM/dd/yyyy') >= Date($(Var_StartDate), 'MM/dd/yyyy') 
AND 
Date('10/21/2016', 'MM/dd/yyyy') <= Date($(Var_EndDate), 'MM/dd/yyyy') 
,1,0) 

私はここで間違っていますか?

+0

それがにロードされていたときに、日付として認識されていない - 多分クリス日付位に –

+0

感謝を使用してみてください、私はそれが間違いなく問題だと思う。残念ながら、Qlikは日付を使用している日付としてフィールドを認識していません。 – DixieFlatline

+0

これまで私はこの問題を抱えていましたが、それを解決する唯一の方法は、あなたの日付フォーマットを長い目で見て、それに応えようとすることです。 PYMT_DTのディメンションの横にあるテーブルで 'date(date#(PYMT_DT、 'MM/dd/yyyy')、 'MMM dd yyyy')'を試すことができます。変換されていない値は、 –

答えて

0

最初のポイントはフォーマットであり、大文字の'MM/DD/YYYY'である必要があります。 2番目の点は、テキストを日付に変換するためのDate#関数が必要なことです(Dateは日付または数値の形式のみを変更します)。第3のポイントは、変数を'$(variable)'でラップする必要があることです。これは変数の値ではなく変数として解釈されます。

変数の場合は、MakeDateを使用して日付として作成することをお勧めします。

ます以下のコードを貼り付け、実行することができます

LET Var_StartDate = MakeDate(2016, 10, 20); 
LET Var_EndDate = MakeDate(2016, 10, 30); 

DATA: 
LOAD 
    PYMT_DT, 
    if(Date#(PYMT_DT, 'MM/DD/YYYY') >= '$(Var_StartDate)' AND Date#(PYMT_DT, 'MM/DD/YYYY') <= '$(Var_EndDate)', 1, 0) as test 
Inline [ 
    PYMT_DT 
    10/19/2016 
    10/21/2016 
    11/01/2016]; 

これはあなたのPYMT_DTのように見えるenter image description here