sas时间和Linux时间转化,将SAS日期时间转换为SAS中的UNIX时间戳

我试图将SAS日期时间转换为UNIX时间戳,但在结果中获得了8小时的差异。我认为这与时区问题有某种关系,但我无法弄清楚。将SAS日期时间转换为SAS中的UNIX时间戳

首先,我在mySQL中运行以下语句以获得所需的结果。

查询:

SELECT UNIX_TIMESTAMP('2017-01-01 00:00:00') AS wanted_unix_timestamp

结果:

UNIX_TIMESTAMP('2017-01-01 00:00:00')

---------------------------------------

1483221600

然后我试着写SAS代码至SAS时间值转换成数字,但它似乎为8小时的休息时间:

%let wanted_unix_timestamp = 1483221600;

%let sas_epoch = '01jan1960:00:00:00'dt;

%let unix_epoch = '01jan1970:00:00:00'dt;

%let unix_timestamp_offset = %sysfunc(intck(seconds,&sas_epoch,&unix_epoch));

%let sas_datetime = %sysfunc(dhms(%sysfunc(mdy(1,1,2017)),0,0,0));

%let unix_timestamp = %eval(&sas_datetime - &unix_timestamp_offset);

%put &=sas_datetime;

%put &=unix_timestamp_offset;

%put &=unix_timestamp;

%put %eval(&wanted_unix_timestamp - &unix_timestamp);

结果:

SAS_DATETIME=1798848000

UNIX_TIMESTAMP_OFFSET=315619200

UNIX_TIMESTAMP=1483228800

-7200

基于一些谷歌搜索我的抵消似乎是正确的。我也尝试在mySQL中将会话时区设置为不同的时区,以查看是否通过使用SET SESSION time_zone = 'US/Pacific';和SET SESSION time_zone = 'Europe/Helsinki';而产生差异,但它们对输出没有影响。

编辑:我正在使用SAS 9.4,所以如果有更简单的方法去解决这个问题,那么我很乐意将它作为答案。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值