繁体   English   中英

从 SAS 中的日期/时间列减去日期时如何保持数据类型

[英]how to keep datatype when substracting day from date/time column in SAS

我的问题真的很简单,希望有人愿意回答..

非常新的 SAS,日期及其格式真的让我感到困惑。

我有时间戳列,我需要从中减去 2 天,同时保持其数据类型

该列的值为“2022-04-20-19.37.57.714699”我需要的是“2022-04-18-19.37.57.714699”当我尝试这个时我得到数字数据类型:

PROC SQL;
CREATE TABLE my_table AS 
SELECT 
cust_id,query_date, (query_date)-2 as calc_date
 FROM other_table
;quit;

我尝试使用格式,日期时间 function,但结果是“声明无效或使用顺序不当”

谢谢

假设 QUERY_DATE 变量是数字并且其中包含日期时间值(自 1960 年以来的秒数),那么您可以使用带有 DTDAY 间隔的INTNX() function将值调整两天。 要保持一天中的同一时间,请对 alignment 参数使用 SAME。

intnx('dtday',query_date,-2,'same')

或者,您可以从该值中减去 48 小时的秒数。

query_date -2*'24:00:00't 

如果您希望值以人类可读的方式显示,则将许多日期时间格式中的任何一种附加到新变量,例如 DATETIME。

CREATE TABLE my_table AS 
  SELECT cust_id,query_date
       , intnx('dtday',query_date,2,'same') as calc_date format=datetime20.
  FROM other_table
;

如果变量只是一个字符串,那么你不能从字符串中减去。 您必须将字符串转换为数字才能执行算术运算。 对于 SAS 日期时间信息格式/格式,您可能有太多小数位要复制(并且可能要唯一地存储在浮点值中)所以只需转换日期部分,然后将 append 转换回 rest 以保持同一天的时间。 由于日期存储为天数,您可以使用正常减法减去 2 天。

put(input(query_date,yymmdd10.)-2,yymmdd10.)||substr(query_date,11)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM