date - SAS today() 函数程序
问题描述
所以这段代码来自我以前的角色(不是我自己),我试图了解它是否完全没用。对 SAS 来说还是相当新的,但我对 Today() 函数的理解是它给出了自 1960 年 1 月 1 日以来的天数。第一个语句和一系列 if/else 都取决于 today() 是否返回小于 8 的数字,这当然不应该发生。我错过了什么还是这段代码什么也没做?(我肯定已经更改了代码并且之前忘记删除它,所以他们可能不会发疯,但我只是在这里感到困惑)。
数据日期;
rundate=mdy(1,1,year(today()));
if day(today()) >= 8 then do;
enddate=today()-3;
end;
else do;
if month(today()) ~= 1 then do;
if (month(today())-1) in (1,3,5,7,8,10,12) then do;
enddate=mdy(month(today())-1,31,year(today()));
end;
else if (month(today())-1) in (4,6,9,11) then do;
enddate=mdy(month(today())-1,30,year(today()));
end;
else do;
if year(today()) not in (2020,2024,2028,2032) then enddate=mdy(2,28,year(today()));
else enddate=mdy(2,29,year(today()));
end;
end;
else do;
enddate=mdy(12,31,year(today())-1);
end;
end;
解决方案
你缺少一个功能!
if day(today()) >= 8 then do;
day()
返回月份中的某一天 - 一个从 1 到 31 的数字。
因此,如果您不在本月的第一周,这仅适用于第一部分 - 例如金融中的常见事情。如果不是该月的第一周,则该期间的结束日期为 3 天前。如果是该月的第一周,则执行更复杂的逻辑。
推荐阅读
- c - C 中的分段错误,使用 char*
- javascript - JS输入值数量不会改变值
- prestashop - Prestashop 订单状态消息
- r - R 4.0.x 是否向后兼容 R 3.6.x?
- mysql - 如何从此 JSON 中获取值?
- windows - 如何让批处理脚本找到特定文件并将其删除?
- eclipse - Eclipse、Java 11、OSGI 和 JAXB
- javascript - Discord.js 检查频道的每个角色权限
- python - Numpy将数组中的一系列整数转换为十六进制值
- python - 我得到一个空的数据框,试图通过网络抓取 html 代码。为什么?