date - 使用 ISO 8601 表示法创建自定义 SAS 日期时间格式

标签 date datetime sas format iso

我在 SAS 表中有一个字符变量,其中填充了非常规类型的日期时间。事实上,它具有以下格式:YYYY-MM-DDT00:00:00.000+00:00。以下是一个示例:2020-01-01T00:00:00

我想将此字符列转换为日期列。我一直在文档中搜索相关格式,但没有找到正确的格式。

我找到了 $E8601DZ. ( $E8601DZ. format ),例如:2020-01-01T00:00:00+00.00 (注意 .000 秒后丢失)和 $E8601DTw.d ( $E8601DTw.d format ),例如导致: 2020-01-01T00:00:00.000 (请注意缺少 +00:00)。

因此,是否可以“混合”这两种格式,从而产生自定义格式,从而创建具有所需格式的日期变量?

SAS 代码:

data example;
   date="2020-01-01T00:00:00.000+00:00";
run;

最佳答案

只需使用正确的信息读取数据并使用正确的格式写入数据。如果偏移始终为零,请使用 E8601DZ 格式/信息。要包含三位小数,只需确保指定您想要的位置即可。生成的字符串的总宽度为 29 个字符,其中小数点右侧 3 个字符,因此使用 e8601dz29.3 格式规范。您不想在 INFORMAT 中包含小数点宽度,因为信息中小数位的含义与格式中的小数位含义不同,因此使用 e8601dz29. 作为信息规范。

data example;
   string="2020-01-01T00:00:00.000+00:00";
   datetime=input(string,e8601dz29.);
   format datetime datetime19.;
   string2=put(datetime,e8601dz29.3);
   put (_all_) (=/);
run;

结果:

string=2020-01-01T00:00:00.000+00:00
datetime=01JAN2020:00:00:00
string2=2020-01-01T00:00:00.000+00:00

关于date - 使用 ISO 8601 表示法创建自定义 SAS 日期时间格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65792995/

相关文章:

SAS 合并数据集以覆盖值

sql - 每 2 个月根据不同行的最小(日期)标记列

sql - 您如何从 Redshift 将数据卸载到 S3 并在文件名中包含日期

javascript - Javascript 日期对象中的时间不同

java - SimpleDateFormat 不维护时区

python - Pandas 公历日期到朱利安

r - 117/12/31 格式的日期

javascript - 如果日期是今天的日期显示 "today"或 "yesterday"

configuration - SAS DM - 删除结果选项卡

sas - 测试变量是否存在