楼主: zuizhou29
2250 7

[实际应用] 关于计算日期的问题 [推广有奖]

  • 0关注
  • 0粉丝

高中生

70%

还不是VIP/贵宾

-

威望
0
论坛币
38 个
通用积分
1.0000
学术水平
3 点
热心指数
0 点
信用等级
0 点
经验
500 点
帖子
29
精华
0
在线时间
26 小时
注册时间
2007-6-30
最后登录
2019-8-30

楼主
zuizhou29 发表于 2011-4-26 15:57:41 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
源数据表结构:
year        month
2008          1
...               ...
都是数值型的;
现在要根据year和month两个字段得出所在月的月初和月末。month_bg和month_ed都是SAS日期型数据。
结果:
year        month      month_bg        month_ed
2008          1            2008-1-1          2008-1-31
...               ...                ...                    ...
谢谢大家了。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:month mont year Mon Nth 数据表

沙发
zuizhou29 发表于 2011-4-26 16:31:26
自己顶一下。

藤椅
baoaibaobao 发表于 2011-4-26 16:38:42
  1. data have;
  2. input year month;
  3. month_bg=mdy(month,1,year);
  4. month_ed=mdy(month,31,year);
  5. format month_bg month_ed yymmdd10.;
  6. cards;
  7. 2008 1
  8. ;
复制代码

板凳
soporaeternus 发表于 2011-4-26 16:57:49
月头没问题,月尾可能这样严密点
  1. month_ed=intnx("month",month_bg,0,'end')
复制代码
已有 2 人评分学术水平 热心指数 信用等级 收起 理由
hopewell + 1 + 1 + 1 我很赞同
baoaibaobao + 1 + 1 + 1 分析的有道理

总评分: 学术水平 + 2  热心指数 + 2  信用等级 + 2   查看全部评分

Let them be hard, but never unjust

报纸
baoaibaobao 发表于 2011-4-26 17:01:20
soporaeternus 发表于 2011-4-26 16:57
月头没问题,月尾可能这样严密点
  1. month_ed=intnx("month",month_bg,0,'end')
复制代码
说的是哈,忽略大小月了,多谢!

地板
zuizhou29 发表于 2011-4-27 08:59:12
多谢各位,昨天想到了,基本上跟上面的一样,谢谢!

7
SAS程序员 发表于 2011-4-28 09:50:07
month_bg=mdy(month,1,year);
if month in (1,3,5,7,8,10,12) then month_ed=mdy(month,31,year);
else if month in (4,6,9,11) then month_ed=mdy(month,30,year);
else if mod(year,4)=0 then month_ed=mdy(month,29,year);
else if mod(year,4)^=0 then month_ed=mdy(month,28,year);
format month_bg month_ed yymmdd10.;

8
SAS程序员 发表于 2011-4-28 09:53:28
抱歉上面的有点不全,用这个:
month_bg=mdy(month,1,year);
if month in (1,3,5,7,8,10,12) then month_ed=mdy(month,31,year);
else if month in (4,6,9,11) then month_ed=mdy(month,30,year);
else if month=2 and mod(year,4)=0 then month_ed=mdy(month,29,year);
else if month=2 and mod(year,4)^=0 then month_ed=mdy(month,28,year);
format month_bg month_ed yymmdd10

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-3 00:29