sas怎么用于时间的函数
发表于:2025-11-11 作者:千家信息网编辑
千家信息网最后更新 2025年11月11日,这篇文章给大家介绍sas怎么用于时间的函数,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。处理股票数据,经常要对时间变量作处理,特意摘录sas.support.com的样例来学习s
千家信息网最后更新 2025年11月11日sas怎么用于时间的函数
这篇文章给大家介绍sas怎么用于时间的函数,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
处理股票数据,经常要对时间变量作处理,特意摘录sas.support.com的样例来学习sas的用于时间的函数.另外《DATE HANDLING IN THE SAS ® SYSTEM》一文中也有很多详细的例子。
*计算年龄;/* Create sample data */data birth; input name $ bday :mmddyy10.;datalines;Miguel 12/31/1973Joe 02/28/1976Rutger 03/29/1976Broguen 03/01/1976Susan 12/12/1976Michael 02/14/1971LeCe 11/09/1967Hans 07/02/1955Lou 07/30/1960;run;/* Use the INTCK function to count the number of months between *//* the date of birth and the current date. Divide the number of *//* months by 12 to produce the number of years. Use the MONTH *//* function to determine if the month of the birthday and the current *//* date are the same. If they are, determine if the birthday has *//* occurred this year. If it hasn't, adjust the age by subtracting *//* one year. */ data ages; set birth; retain current; if _n_=1 then current=today(); format bday current worddate20.; age=int(intck('month',bday,current)/12); if month(bday)=month(current) then age=age-(day(bday)>day(current));run;proc print;run;*计算两个日期间的年月日数目;data a; input @1 dob mmddyy10.; /* Get the current date from operating system */ tod=today(); /* Determine number of days in the month prior to current month */ bdays=day(intnx('month',tod,0)-1); /* Find difference in days, months, and years between */ /* start and end dates */ dd=day(tod)-day(dob); mm=month(tod)-month(dob); yy=year(tod)-year(dob); /* If the difference in days is a negative value, add the number */ /* of days in the previous month and reduce the number of months */ /* by 1. */ if dd < 0 then do; dd=bdays+dd; mm=mm-1; end; /* If the difference in months is a negative number add 12 */ /* to the month count and reduce year count by 1. */ if mm < 0 then do; mm=mm+12; yy=yy-1; end; format dob tod mmddyy10.;datalines;01/01/197002/28/199201/01/200002/28/200002/29/200003/01/200005/10/199005/11/199005/12/1990;proc print label; label dob='Date of Birth' tod="Today's Date" dd='Difference in Days' mm= 'Difference in Months' yy='Difference in Years'; var dob tod yy mm dd;run;/*********************************************************************//* The following code calculates the start and end dates for *//* daylight saving time for the years 2006 through 2009. *//* *//* FDOY represents the first day of the year *//* FDO_APR represents the first day of April *//* DST_BEG represents the first day of daylight saving time *//* *//* It is calculated using this syntax: *//* intnx('week.1',fdo_apr,(weekday(fdo_apr) ne 1)) *//* *//* Explanation of the above syntax: *//* - weekday(fdo_apr) returns a number between 1 and 7, *//* which represents the day of the week, 1=Sunday and 7=Saturday *//* *//* - weekday(fdo_apr) ne 1) returns a 0 if the first day *//* of April is a Sunday and 1 otherwise. *//* *//* - intnx('week.1',fdo_apr,(weekday(fdo_apr) ne 1)) returns a *//* SAS date which is 0 WEEK intervals from the FDO_APR, if the *//* first day of April is a Sunday. The WEEK.1 interval specifies */ /* Sunday as the first day of the week. *//* *//* OR *//* *//* returns a SAS date which is 1 WEEK interval from the FDO_APR, *//* if the first day of April is not a Sunday, (using Sunday as *//* the first day of the week). *//* *//* *//* DST_END represents the end of daylight saving time and is *//* calculated similarly to DST_BEG. *//*********************************************************************/data _null_; do year=2006 to 2009; fdoy=mdy(1,1,year); /* For years prior to 2007, daylight time begins in the United States on */ /* the first Sunday in April and ends on the last Sunday in October. */ if year <= 2006 then do; fdo_apr=intnx('month',fdoy,3); dst_beg=intnx('week.1',fdo_apr,(weekday(fdo_apr) ne 1)); fdo_oct=intnx('month',fdoy,9); dst_end=intnx('week.1',fdo_oct,(weekday(fdo_oct) in (6,7))+4); end; /* Due to the Energy Policy Act of 2005, Pub. L. no. 109-58, 119 Stat 594 */ /* (2005). Starting in March 2007, daylight time in the United States */ /* will begin on the second Sunday in March and end on the first Sunday */ /* in November. For more information, one reference is */ /* http://aa.usno.navy.mil */ else do; fdo_mar=intnx('month',fdoy,2); dst_beg=intnx('week.1',fdo_mar, (weekday(fdo_mar) in (2,3,4,5,6,7))+1); fdo_nov=intnx('month',fdoy,10); dst_end=intnx('week.1',fdo_nov,(weekday(fdo_nov) ne 1)); end; put dst_beg= worddate. / dst_end= worddate. / ; end;run;/* Sample 1: Variables for date, hour, minute and seconds */data datetime; if _n_=1 then sdate=date(); retain sdate; format sasdt dateampm22. bid dollar6.0; input hr min sec bid dollar6.; sasdt=dhms(sdate,hr,min,sec); keep sasdt bid ; datalines; 8 00 25 $200 8 10 14 $300 9 24 30 $400 ; run; /* Sample 2 : Variables for date and time */data datetime; if _n_=1 then sdate=date(); retain sdate; format sasdt dateampm22. bid dollar6.0; input stime time8. +1 bid dollar6.; /* Use zero placeholders for the H and M parameters */ sasdt=dhms(sdate,0,0,stime); keep sasdt bid ; datalines; 10:30:30 $450 11:49:20 $465 13:44:12 $475 ;run;data ds1; do date='01nov2010'd to '31dec2010'd; output; end;run;/* The WEEK variable returns a value of 1 to 5 based on the number of weeks in a month using a combination of the INTNX and INTCK functions. Note: The INTCK function returns the integer number of time intervals in a given time span. By default, Sunday is the beginning of the week interval. The INTNX function increments (either forwards or backwards) a date, time or datetime value by a specified interval. */data ds2; set ds1; week=intck('week',intnx('month',date,0),date)+1;run;proc print; format date date9.;run;*finding the first business day of the mounth;/* Create sample data */data test; input date :mmddyy6.; format date date9.;datalines;010106010406041806081806123106;data getweek; set test; /* Use INTNX to roll DATE back to the first of the year. */ /* Pass the result as the 'start' parameter to INTCK. */ week=intck('week',intnx('year',date,0),date)+1; /* If you are in SAS 9.1, you can use the WEEK function. */ /* The WEEK function has an optional second argument that */ /* can be used to specify whether a week starts on Sunday */ /* or Monday. For more information, please refer to the */ /* SAS NLS User's Guide. */ /* U indicates Sunday is the first day of the week */ week_function=week(date,'u'); run;/* create sample data */data one; input date mmddyy6.; format date date9.; cards;011509 021509 030409 ;data two; set one; /* advance date to the first day of the month using the INTNX function */ first=intnx('month',date,0); /* determine the day of the week using the WEEKDAY function */ day=weekday(first); /* if day=Sunday then advance by 1 */ if day=1 then first+1; /* if day=Saturday then advance by 2 */ else if day=7 then first+2; format first date9.;proc print; title 'First Business Day of the Month';run;/* Sample 1 -- Rolling dates forwards and backwards by month using the SAMEDAY *//* parameter new in SAS 9.1. Do NOT 'roll over' to next month if *//* the adjusted month has fewer days than the day value of the *//* starting month. */ data _null_; /* Test with non-leap year */ do date='27MAR2003'd to '01APR2003'd; lastmonth= intnx('month',date,-1,'sameday'); put (date lastmonth)(=worddate.); end; /* Test with leap year */ put; do date='27MAR2004'd to '01APR2004'd; lastmonth=intnx('month',date,-1,'sameday'); put (date lastmonth)(=worddate.); end; put; /* Test future dates */ do date='27JAN2004'd to '01FEB2004'd; nextmonth=intnx('month',date,1,'sameday'); put (date nextmonth)(=worddate.); end;run;/* Sample 2 -- Rolling dates forwards and backwards by month using the SAMEDAY *//* parameter new in SAS 9.1 while allowing shifted months with *//* fewer days to 'roll over' to the next month. *//* */ /* The default alignment of the INTNX function is the beginning of the shift *//* period, the first of the month in this case. If the resulting date is in a *//* month with less than 31 days, adjust the appropriate number of days into *//* the next month. */data _null_; /* Test with non-leap year */ do date='27MAR2003'd to '01APR2003'd; lastmonth=date - intnx('month',date,0)+intnx('month',date,-1); put (date lastmonth)(=worddate.); end; /* Test with leap year */ put; do date='27MAR2004'd to '01APR2004'd; lastmonth=date - intnx('month',date,0)+intnx('month',date,-1); put (date lastmonth)(=worddate.); end; put; /* Test future dates */ do date='27JAN2004'd to '01FEB2004'd; nextmonth=date - intnx('month',date,0)+intnx('month',date,1); put (date nextmonth)(=worddate.); end;run关于sas怎么用于时间的函数就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
时间
函数
内容
更多
处理
帮助
不错
两个
例子
兴趣
变量
小伙
小伙伴
年月
年月日
年龄
数据
数目
文章
日期
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
高性能服务器设计聊天知乎
晋中5g网络技术
宁海网络技术有限公司
怎么判断服务器是副域
access数据库教程实例
现代信息网络技术百度百科
我国几次比较重大的网络安全
电力营销系统服务器
SC表示什么数据库
网络安全工作检查工作总结
汽车租赁数据库sql
无线网络技术教学研究
石化行业网络安全
杭州畅铭网络技术有限公司
应用软件开发公司员工职责
小学生网络安全意义
吖座数据库
自动驾驶 软件开发 薪资
数据库表中存的网址怎么访问的
服务器在哪下载
厦门兔子软件开发怎么做
晋中5g网络技术
天域互联网科技中心
软件开发java招聘启事
cmd 还原数据库
软件开发短期培训班价格
卢龙县委网络安全
江干区图腾网络服务器机柜厂家
服务器上的数据
苏州app软件开发公司