楼主: renchaoqun
9538 4

如何对时间变量进行大小比较? [推广有奖]

  • 0关注
  • 0粉丝

已卖:3份资源

小学生

71%

还不是VIP/贵宾

-

威望
0
论坛币
38 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
46 点
帖子
5
精华
0
在线时间
6 小时
注册时间
2009-10-24
最后登录
2017-2-15

楼主
renchaoqun 发表于 2009-11-13 14:35:32 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
dCONTRACTT的格式是:01JAN2008:00:00:00

如果想让在CONTRACTT 在2008年以后的,CONTRACTTime=2008年,
我用了下面的语句:


if "01JAN2008:00:00:00"<=CONTRACTT then CONTRACTTime=2008;
可是发现,2007年,2006年的以后的时间,也变成2008年了。
请问这是怎么回事啊?多谢啦
二维码

扫码加我 拉你入群

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

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

关键词:时间变量 contract contr time ACT 时间 变量

回帖推荐

jingju11 发表于4楼  查看完整内容

1# renchaoqun 我想原因可能如此:当SAS判断此条件是,SAS 试图把"01JAN2008:00:00:00" 转化为数字,但是出现错误,因此1.把错误写入log; 2. 把它当作缺失值。缺失值总是最小,因此条件总是成立,把CONTRACTTime 赋值为2008。 而且正如已被指出的, 你的逻辑也有些问题啊, 以下code可以考虑

本帖被以下文库推荐

沙发
xiaosanmao 发表于 2009-11-13 15:12:40
这是非常正确的事情
因为2006,2007 都小于等于2008
<=contractt 是小于等于的意思

藤椅
xing-_-he 发表于 2009-11-13 18:58:25
01JAN2008:00:00:00在表示日期时间的时候需要写成"01JAN2008:00:00:00"dt形式

板凳
jingju11 发表于 2009-11-14 00:43:39
1# renchaoqun

我想原因可能如此:
  1. if "01JAN2008:00:00:00"<=CONTRACTT then CONTRACTTime=2008;
复制代码
当SAS判断此条件是,SAS 试图把"01JAN2008:00:00:00" 转化为数字,但是出现错误,因此1.把错误写入log; 2. 把它当作缺失值。缺失值总是最小,因此条件总是成立,把CONTRACTTime 赋值为2008。

而且正如已被指出的, 你的逻辑也有些问题啊,
可是发现,2007年,2006年的以后的时间,也变成2008年了。。。
以下code可以考虑

  1. data _null_;
  2.     contractt =2008;
  3.     if year(datepart("31JAN2009:00:00:00"dt)) <=CONTRACTT then CONTRACTTime =2008;
  4.     put @1 contractTime =;
  5. run;
复制代码
已有 1 人评分经验 论坛币 收起 理由
bakoll + 3 + 3 精彩帖子

总评分: 经验 + 3  论坛币 + 3   查看全部评分

报纸
zhouli2016 发表于 2016-5-23 10:15:49
jingju11 发表于 2009-11-14 00:43
1# renchaoqun

我想原因可能如此:当SAS判断此条件是,SAS 试图把"01JAN2008:00:00:00" 转化为数字,但 ...
如果中间存在空值的话应该怎么处理呢?

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

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