1.首先,在SAS中,沒有合適的format可以對(duì)“2020-06”字符型日期直接轉(zhuǎn)為數(shù)值型。無(wú)論是用yymmdd6.有關(guān)的格式還是yymmn6.格式。
關(guān)于yymmn6.格式:是一種將“202006”這種字符型日期轉(zhuǎn)為數(shù)值型的format;但轉(zhuǎn)換之后的數(shù)值型日期指的是當(dāng)月的第一天即20200601號(hào)的數(shù)值型日期時(shí)間,下面程序運(yùn)行之后結(jié)果相等。

yymmn6.格式的使用與anydtdte.格式使用差不多,將需要填補(bǔ)的日期轉(zhuǎn)換為任何日期格式,只可以用來(lái)轉(zhuǎn)為數(shù)值型(且轉(zhuǎn)為的數(shù)值型為當(dāng)月的第一天),且對(duì)2010-10-01這種的完整日期格式無(wú)效,從數(shù)值型轉(zhuǎn)為字符型用anydtdtc.這個(gè)格式會(huì)報(bào)錯(cuò),

2.日期變量的比較字符型可以和字符型比較,數(shù)值型可以和數(shù)值型比較,且不報(bào)錯(cuò),因此進(jìn)行日期變量之間的比較時(shí)候不必轉(zhuǎn)為數(shù)值型,無(wú)論字符型日期完整不完整都可以進(jìn)行比較。

3.關(guān)于日期填補(bǔ),示例請(qǐng)看如下:


intck函數(shù)與intnx很類似,第一個(gè)用于計(jì)算兩個(gè)變量之間的間隔,第二個(gè)用于計(jì)算在第一個(gè)變量固定間隔多少個(gè)之后的值是多少。
以此為例:intnx('month', input(aa, anydtdte.), 0, 'e'),intnx函數(shù)的參數(shù)解釋如下:
'month':表示在月的基礎(chǔ)上按間隔遞增。
input(aa, anydtdte.):將需要填補(bǔ)的日期轉(zhuǎn)換為任何日期格式。
0:表示在本月的基礎(chǔ)上遞增(如果想在下月就寫1,以此類推)。
'e':表示遞增到月末(如果是月初就是'b',月中就是'm')。
我在網(wǎng)上也找到了其他填補(bǔ)的方法:


首先用year()/month()/day()函數(shù)取出首次治療日期的單個(gè)部分來(lái),然后從開始日期或結(jié)束日期中用scan函數(shù)用T和-作為分隔符提取年、月、日。然后對(duì)于組合的日期采用mdy()函數(shù),此函數(shù)共三個(gè)參數(shù),分別是月、日、年,用逗號(hào)分割三個(gè)參數(shù)

4.需要計(jì)算AE的持續(xù)時(shí)間,想要的結(jié)果是xx天xx時(shí)xx分的形式。天好做,用結(jié)束日期-開始日期+1.但是計(jì)算小時(shí)分鐘,因?yàn)橹苯佑胕ntck函數(shù)計(jì)算的是間隔的小時(shí)數(shù)或分鐘數(shù)而不是,真正零碎的不到一天或不到一小時(shí)的時(shí)間,因此需要除以相應(yīng)的分母,比如24小時(shí)、60分鐘,? ?并根據(jù)結(jié)果是正是負(fù)增加相應(yīng)的24或60,取余數(shù)計(jì)算。如下所示.
