如何将日期从YYYY-MM-DD转换/更新为DDMMMYYYY格式?

时间:2019-02-12 15:40:21

标签: sql sas

我对编码还比较陌生,但是已经开始在我的新工作中使用它。目前,我正在尝试使两个不同表中的两列具有相同的日期格式。第一个为DDMMMYYYY格式(即01Jan2019),第二个为YYYY-MM-DD格式(即2019-01-01)。我想将2nd更改为1st格式,但是我在网上没有看到任何建议。任何帮助将不胜感激,因为最终目标是在此date列上连接这两个表。

我假设代码的形式看起来像这样?

update table2
set date = ???????;

3 个答案:

答案 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;
相关问题