[英]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.