【问题标题】:SAS informat datetime millisecondsSAS 信息日期时间毫秒
【发布时间】:2009-09-24 12:00:25
【问题描述】:

SAS 能否存储和使用包含小于 1/10 秒小数的日期时间?

例如:

data _null_;
input @1 from_dt:datetime22.;
put from_dt= ;
cards;      
24Sep2009:11:21:19.856
;
run;

【问题讨论】:

    标签: datetime sas informat


    【解决方案1】:

    日期时间变量是一个数值变量,就像任何其他数值变量一样。我们只是将其值理解为自 01jan1960T00:00:00 以来的秒数。希望这会有所帮助。

    data _null_;
    
      /* for date time, 1 means 1 sec since midnight jan 1st 1960 */
      dt = 1;
      put dt :datetime.;
    
      /* you can show the hundredth of second using datetime format */
      dt = 0.01;
      put dt :datetime19.2;
    
      /* but it is just a double type number. you can do
         what you want with the variable as with any other numeric
         variables */
      dt = 0.01;
      put "It was " dt :wordf15. "second after midnight.";
    run;
    /* on log
    01JAN60:00:00:01
    01JAN60:00:00:00.01
    it was zero and 01/100 second after midnight.
    */
    

    【讨论】:

      【解决方案2】:

      您的示例代码对打印输出进行了四舍五入。在 put 语句中添加格式(例如 best32.)表明存在更好的精度...

      data _null_; 
      input @1 from_dt:datetime22.; 
      put from_dt= best32.; 
      cards;
      24Sep2009:11:21:19.856 
      ; 
      run; 
      
      from_dt=1569410479.856
      

      【讨论】:

        【解决方案3】:

        正如 Rog 所指出的,您可以以超过 0.1 秒的精度读取和存储日期时间。

        只需使用 datetime22.3 或类似的格式和信息,而不是 datetime22。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-04-08
          • 1970-01-01
          • 2014-10-12
          • 2021-09-27
          • 1970-01-01
          • 2019-12-09
          相关资源
          最近更新 更多