我对编码还比较陌生,但是已经开始在我的新工作中使用它。目前,我正在尝试使两个不同表中的两列具有相同的日期格式。第一个为DDMMMYYYY
格式(即01Jan2019),第二个为YYYY-MM-DD
格式(即2019-01-01
)。我想将2nd更改为1st格式,但是我在网上没有看到任何建议。任何帮助将不胜感激,因为最终目标是在此date列上连接这两个表。
我假设代码的形式看起来像这样?
update table2
set date = ???????;
答案 0 :(得分:1)
无法以特定方式设置“ DateTime”类型的列的格式。一列或两列很可能是'varchar'或'nvarchar'类型的。
要将它们用作适当的“ DateTime”列,您可以添加“ DateTime”类型的新列,然后将其从旧的“ varchar”列中复制为“ DateTime”。
答案 1 :(得分:1)
在SAS中,FORMAT只是有关如何显示值的说明。因此,如果DATE9有一个变量。附带的格式规范,另附带YYMMDD10。附加的格式不会更改存储的实际值。
您可以使用FORMAT语句来更改要与变量一起使用的显示格式。您可以只在显示数据的位置执行此操作。说一个PROC步骤。
let a = [44, 23, 16, 5, 52, 36]
console.log(a) //print the original a
let b = a;
b.sort((c, d) => {
return c - d
});
console.log(a) //a is sorted however we do not call a.sort(...) method
或者您可以在数据集定义中附加格式。然后,默认情况下,SAS将使用该格式进行格式化。
proc print data=a ;
format date_vara yymmdd10.;
run;
proc print data=b ;
format date_varb yymmdd10.;
run;
您甚至可以修改数据集的元数据以更改变量附加的格式。
data new;
set a b ;
format date_vara date_varb yymmdd10.;
run;
PS如果要将日期文字(常量)添加到SAS代码中,则需要始终使用DATE格式可以读取的样式的字符串。 proc datasets lib=work nolist;
modify a;
format date_vara yymmdd10.;
run;
quit;
不管变量附加了什么显示格式。
答案 2 :(得分:0)
假设变量的类型是带有日期格式的数字,则可以像更改所应用的格式一样简单。如果是字符变量,则需要进行类型转换。
您可以在数据步骤中应用格式,也可以使用PROC DATASETS修改现有格式。请参见下面的每个示例。
*change format as part of a data step;
data ibm;
set sashelp.stocks;
format date yymmddd10.;
run;
proc print data=ibm (obs=5);
run;
*change format without modifying data set;
proc datasets lib=work nodetails nolist;
modify ibm;
format date worddate.;
run;
proc print data=ibm (obs=5);
run;