首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Qliksense日期比较错误

Qliksense日期比较错误
EN

Stack Overflow用户
提问于 2016-11-08 06:02:18
回答 2查看 1.2K关注 0票数 0

我在试着检查一个日期是否比另一个日期更重要。这是我使用的公式:

代码语言:javascript
复制
=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。但是,如果我直接在公式中键入日期,它就能正常工作。

让我们以这些值为例:

代码语言:javascript
复制
PYMT_DT = 10/21/2016
Var_StartDate = 10/20/2016
Var_EndDate = 10/30/2016

这应该给我一个1,但我得到了一个0。但是,如果我用实际的日期值替换PYMT_DT,我会得到正确的结果:

代码语言:javascript
复制
=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)

我在这里做错了什么?

EN

回答 2

Stack Overflow用户

发布于 2018-01-12 21:55:00

第一点是格式,它需要是大写的'MM/DD/YYYY'。第二点是,您需要Date#函数将文本转换为日期(Date仅更改日期或数字的格式)。第三点是,您的变量需要用'$(variable)'包装,以便将变量的值解释为值,而不是变量。

对于变量,建议使用MakeDate将其创建为日期。

下面的代码可以粘贴并运行

代码语言:javascript
复制
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];

票数 0
EN

Stack Overflow用户

发布于 2019-11-04 23:47:40

如果你的日期有可能有时间成分,你也需要确保你floor()他们为了比较,否则它可能是时间的问题。除了使用正确的格式等,这可能会导致:

代码语言:javascript
复制
=if(
floor(Date#(PYMT_DT, 'MM/DD/YYYY')) >= floor(Date#('$(Var_StartDate)', 'MM/DD/YYYY'))
AND
floor(Date#(PYMT_DT, 'MM/DD/YYYY')) <= floor(Date#('$(Var_EndDate)', 'MM/DD/YYYY'))
,1,0)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40475472

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档