首页 > 解决方案 > SAS EG 迄今为止在不同的机器上获得不同的结果 - 或者 SAS 语言环境设置在哪里?

问题描述

有字符串"09/07/2019 20:40:01 EDT"

在连接到远程 UNIX 服务器的 SAS EG 7.1 中运行命令

input(substr(event_time, 1, length(event_time)-4),anydtdtm23.) format DateTime23.3 as event_time

一台机器在 2019 年 9 月 7 日正确返回。(为了清楚起见,删除时间位)另一台机器在 2019 年 7 月 9 日返回。

根据我在相关问题中所读到的内容,这似乎是由语言环境设置引起的

什么管理 SAS 区域设置?是我的操作系统吗?远程 UNIX 服务器?SAS EG 设置中的某些内容?

谢谢

标签: sasenterprise-guide

解决方案


除非必须,否则不要使用猜测程序。ANYDT... 系列信息将假定模棱两可的 MDY 或 DMY 字符串遵循 SAS 会话的当前语言设置的自定义。因此,如果 SAS 认为您在英格兰,那么“09/07/2019”看起来就像是 7 月 9 日。但如果你在美国,那么它看起来像 9 月 7 日。

而是使用 MMDDYY 或 DDMMYY 信息读取字符串,具体取决于字符串实际存储的格式。如果您的源实际上使用混合的月日排序样式,则编写代码,使用您的数据中的信息来选择正确的信息格式特定的观察而不是强迫 SAS 使用您的会话设置来决定使用哪一个。


推荐阅读