SAS日期信息(毫秒)

SAS日期信息(毫秒),sas,informat,Sas,Informat,我正在尝试为以下日期格式创建SAS信息: “yyyy-mm-dd hh:ii:ss.SSS UTC”,示例:“2016-01-14 10:31:01.456 UTC” 我已使用以下格式代码接近: PROC FORMAT; PICTURE MyDate other='%0Y-%0m-%0d %0H:%0M:%0s UTC' (datatype=datetime); RUN; 不幸的是,当我尝试使用它作为一个信息时,我得到了一个错误“找不到格式MyDate”,因为它没有被定义为一个信息,只

我正在尝试为以下日期格式创建SAS信息:

“yyyy-mm-dd hh:ii:ss.SSS UTC”,示例:“2016-01-14 10:31:01.456 UTC”

我已使用以下格式代码接近:

PROC FORMAT;
    PICTURE MyDate other='%0Y-%0m-%0d %0H:%0M:%0s UTC' (datatype=datetime);
RUN;
不幸的是,当我尝试使用它作为一个信息时,我得到了一个错误“找不到格式MyDate”,因为它没有被定义为一个信息,只是一个输出格式

我可以尝试从以此格式创建的数据集中创建一个informat,但由于毫秒限制,它将只创建映射到毫秒部分中带.000的时间的值。例如:

DATA MyInDate ;
    RETAIN FMTNAME "MyInputDate" type "I" ;
    do label = "1jan2016:00:00:00"dt to
               "2feb2016:00:00:00"dt by 1;
        start = trim(left(put(label,MyDate.)));
        output ;
    end ;
RUN;
PROC FORMAT CNTLIN=MyInDate;
RUN;
即使我能够以毫秒数枚举数据集,它也会非常大。因为我的约会可以跨越几年

在将输入数据传递给informat之前,是否可以截断输入数据?我不关心毫秒或UTC限定符。我无法更改输入数据

编辑:使用
anydtm.
作为信息会导致空值,而不会出现错误消息。以下是使用此信息的数据步骤:

DATA WORK.ImportDatTest;
LENGTH
    'Event Time'n    8
;
FORMAT
    'Event Time'n    DATETIME25.
;
INFORMAT
    'Event Time'n       anydtdtm.
;
INFILE DATALINES DLM=','
    ;
INPUT
    'Event Time'n    : ANYDTDTM.
;
DATALINES;
2016-01-11 17:23:34.834 UTC
2016-01-11 17:23:34.834 UTC
2016-01-11 17:23:34.834 UTC
;

RUN;

不幸的是,目前无法在SAS中创建图片信息。您需要将数据转换为SAS具有内置信息的格式,或使用函数或类似函数来格式化数据

然而,您的格式已经是这样的,所以您不需要创建informat

data test;
  x="2015-10-05 10:12:24.333 UTC";
  y=input(x,anydtdtm.);
  put y= datetime17.;
run;
您当然可以在使用informat时截断数据;通过在informat中指定长度,它将截断为该长度

下面是一个使用数据线输入的示例:

data test;
  infile datalines dlm=',' dsd;
  input y :anydtdtm32.;
  put y= datetime22.3;
  datalines;
2015-10-05 10:12:24.333 UTC
2014-03-01 08:08:05.435 UTC
2013-01-01 23:02:05.445 UTC
;;;
run;

你想干什么?告密者用来读取日期,不是显示日期,而是在PUT语句中使用日期?或者这只是你格式的一个演示?谢谢。当您的示例运行时,一旦我使用
anydtm.
作为信息,我只会在结果数据集中获得空值(没有错误消息)。在该示例中,我将其用作信息。你能在你的问题中贴一个它不起作用的例子吗?当然,我已经在上面添加了我的相关代码。事件时间的每个“put”都会导致一个空值。事件时间是CSV中问题标题中指定格式的日期。您需要在
数据行中包含要测试的日期。最好是按原样运行代码。好的,我在代码中添加了数据行,得到了3个空值。