【发布时间】:2015-03-20 17:25:27
【问题描述】:
我有一个表格,其中包含一些名为门诊患者的基本信息:
ID Date
A 10/04/11
B 10/18/11
C 11/30/11
在 SAS 中,当我检查日期列时,我看到它的格式为 MMDDYY8。并通知 DATETIME20。对于我需要找到最小日期的另一个步骤:
proc sql;
create table outpatient2 as
select distinct ID, min(Date) as first_date datetime.
from outpatient
group by ID;
quit;
当我检查输出时,它看起来像这样:
ID first_date
A 01JAN60:05:15:05
B 01JAN60:05:15:03
C 01JAN60:05:15:52
因为我没有时间,我的错误解决方法是将门诊表发送到 oracle 并使用以下命令调用它:
from userid.outpatient
我确实通过在数据步骤中设置它来检查 sas 中的 oracle 版本,它似乎是格式,并且都通知 DATETIME20。但是使用周围的错误修复,我得到了我正在寻找的正确输出:
ID first_date
A 05OCT11:00:00:00
B 25MAY11:00:00:00
C 09AUG11:00:00:00
请完全忽略日期,它们是一个随机示例,显示日期格式为 MMDDYY8 时。并且使用 min(Date),它返回一个奇数日期,但如果 Date 格式为 DATETIME20。它返回正确的日期。
编辑:没有空白 DATE,虽然 outpatient2 步骤已完成,但我收到一个错误:日期值超出范围。
【问题讨论】:
-
如果您有日期时间和 mmddyy8 格式的信息,则您的源数据表示不正确。你说你修好了,但没有修好,很难说哪里出了问题。您的信息/格式需要与日期时间/日期相匹配,即。非正式的日期时间需要日期时间格式,而日期信息需要日期格式。
-
抱歉,但是当我提到围绕它的错误修复时,实际上是将其发送到 oracle 并调用转到 oracle 的表。我猜我需要将其格式化为 DATETIME20。也一样?