gpt4 book ai didi

mysql - 在 SAS 中将 SAS 日期时间转换为 UNIX 时间戳

转载 作者:行者123 更新时间:2023-11-29 02:44:20 25 4
gpt4 key购买 nike

我正在尝试将 SAS 日期时间转换为 UNIX 时间戳,但结果相差 8 小时。我认为这在某种程度上与时区问题有关,但我不知道如何。

首先,我在 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 中的 session 时区设置为不同的时区,以查看使用 SET SESSION time_zone = 'US/Pacific';SET SESSION time_zone = 'Europe 是否有所不同/Helsinki'; 但它们对输出没有影响。

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

最佳答案

您几乎肯定会受到时区的影响,因为 UNIX_TIMESTAMP1970-01-01 00:00:00 UTC 的秒数形式返回当前时间。因此有 8 小时的时差(在太平洋时区)。

根据 mySQL reference on session time zones ,设置 session 时区影响UTC_TIMESTAMP,虽然它没有直接提到UNIX_TIMESTAMP,但它可能在那里有同样的无效.

关于mysql - 在 SAS 中将 SAS 日期时间转换为 UNIX 时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45150664/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com