我在试着检查一个日期是否比另一个日期更重要。这是我使用的公式:
=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)我在这里做错了什么?
发布于 2018-01-12 21:55:00
第一点是格式,它需要是大写的'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];

发布于 2019-11-04 23:47:40
如果你的日期有可能有时间成分,你也需要确保你floor()他们为了比较,否则它可能是时间的问题。除了使用正确的格式等,这可能会导致:
=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)https://stackoverflow.com/questions/40475472
复制相似问题