2016-11-07 3 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

это выглядит как ваш PYMT_DT не признается в качестве даты, когда он загружается в - возможно, попробуйте использовать Дата # –

+0

Спасибо Крис, Я думаю, что это определенно проблема. К сожалению, Qlik по-прежнему не распознает поле как дату, когда я использую дату #. – DixieFlatline

+0

Я столкнулся с этим раньше, единственный способ разрешить это - долго смотреть на свой формат даты и пытаться удовлетворить его. Вы можете попробовать «дата (дата # (PYMT_DT,« MM/dd/yyyy »),« MMM dd yyyy »)' в таблице рядом с измерением PYMT_DT - непереведенные значения покажут вам, где она не работает –

ответ

0

Первый пункт - это формат, он должен быть прописным 'MM/DD/YYYY'. Второй момент состоит в том, что вам нужна функция Date# для преобразования текста на сегодняшний день (Date только изменяет формат даты или числа). Третья точка заключается в том, что ваша переменная должна быть обернута с помощью '$(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]; 

enter image description here