如何在SAS中将字符串转换为日期?

时间:2017-08-22 20:14:48

标签: sas

我在SAS中有一个表,在一列中存储日期(例如“2005/10”)。 如何将其转换为SAS数据格式?

在其他许多尝试中,我尝试了这段代码:

数据测试;

        format date YYMMS.;

        date = input(ObservationMonth, YYMMS.);

        put date=date9.;

run;

3 个答案:

答案 0 :(得分:1)

您可以使用data want; format date yymms.; text="2005/10"; date=input(text,anydtdte.); put date; run; 信息。

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;

public class Read_Text_File {

    public static void main(String[] args) {
        System.out.println(getValues());
    }

    public static ArrayList<String> getValues() {
        FileInputStream stream = null;
        try {
            stream = new FileInputStream("src/resources/java_txt_file.txt");
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        BufferedReader reader = new BufferedReader(new InputStreamReader(stream));
        String strLine;
        ArrayList<String> lines = new ArrayList<String>();
        try {
            while ((strLine = reader.readLine()) != null) {
                String lastWord = strLine.substring(strLine.lastIndexOf(" ")+1);
                lines.add(lastWord);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        try {
            reader.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return lines;
    }

}

此信息检测大多数日期格式,并将字符存储值转换为SAS日期。

答案 1 :(得分:0)

一种方法是使用substr()mdy()来提取日期组件:

data _null_;
  ObservationMonth ="2005/10";
  date =mdy(substr(ObservationMonth,6,2),1,substr(ObservationMonth,1,4));
  put date = date9.;
run;

另一种选择是使用anydtdte信息(注意结果可能因您的语言区域而异):

data _null_;
  ObservationMonth ="2005/10";
  date =input(ObservationMonth,anydtdte.);
  put date = date9.;
run;

另一个选择是修改输入以启用YYMMDDw.信息:

data _null_;
  ObservationMonth ="2005/10";
  date =input(ObservationMonth!!'/01', YYMMDD10.);
  put date = date9.;
run;

答案 2 :(得分:0)

伙计们,你真棒!非常感谢你,用#34; set&#34;声明它工作正常!