到目前为止,SAS EG 转换字符串在不同的机器上得到不同的结果——或者 SAS 语言环境设置在哪里?
SAS EG casting sting to date getting different results on different machines - or where is SAS locale setting?
有字符串"09/07/2019 20:40:01 EDT"
运行 SAS EG 7.1 中连接到远程 UNIX 服务器的命令
input(substr(event_time, 1, length(event_time)-4),anydtdtm23.) format DateTime23.3 as event_time
一台机器在 2019 年 9 月 7 日正确返回。(为清楚起见,删除了时间位)
另一台机器于 2019 年 7 月 9 日返回。
根据我在相关问题中的阅读,这似乎是由语言环境设置引起的
什么管理 SAS 区域设置?是我的 OS 吗?远程 UNIX 服务器? SAS EG 设置中的内容?
谢谢
除非必须,否则不要使用猜测程序。 ANYDT... 系列信息将假定不明确的 MDY 或 DMY 字符串遵循 SAS 会话的当前语言设置的习惯。因此,如果 SAS 认为您在英格兰,那么“09/07/2019”看起来像是 7 月 9 日。但如果你在美国,那么它看起来像是 9 月 7 日。
而是使用 MMDDYY 或 DDMMYY 信息格式读取字符串,具体取决于字符串实际存储的格式。如果您的源实际上使用混合月日排序样式,则编写代码使用数据中的信息来选择特定观察的正确信息,而不是强制 SAS 使用您的会话设置来决定使用哪个。
有字符串"09/07/2019 20:40:01 EDT"
运行 SAS EG 7.1 中连接到远程 UNIX 服务器的命令
input(substr(event_time, 1, length(event_time)-4),anydtdtm23.) format DateTime23.3 as event_time
一台机器在 2019 年 9 月 7 日正确返回。(为清楚起见,删除了时间位) 另一台机器于 2019 年 7 月 9 日返回。
根据我在相关问题中的阅读,这似乎是由语言环境设置引起的
什么管理 SAS 区域设置?是我的 OS 吗?远程 UNIX 服务器? SAS EG 设置中的内容?
谢谢
除非必须,否则不要使用猜测程序。 ANYDT... 系列信息将假定不明确的 MDY 或 DMY 字符串遵循 SAS 会话的当前语言设置的习惯。因此,如果 SAS 认为您在英格兰,那么“09/07/2019”看起来像是 7 月 9 日。但如果你在美国,那么它看起来像是 9 月 7 日。
而是使用 MMDDYY 或 DDMMYY 信息格式读取字符串,具体取决于字符串实际存储的格式。如果您的源实际上使用混合月日排序样式,则编写代码使用数据中的信息来选择特定观察的正确信息,而不是强制 SAS 使用您的会话设置来决定使用哪个。