首页 > 解决方案 > 使用 C# 将 SAS 日期时间值转换为数据表中的日期时间字符串

问题描述

我正在开发一个应用程序,该应用程序处理使用 C# 将一些 SAS 数据集加载到 SQL 中。我使用 SAS OLE DB 适配器将 SAS 数据集加载到 C# 数据表中并使其正常工作。但是,在 SAS 文件中以字符串数据类型存储的日期值被加载为 10 位数字,并以字符串格式存储在数据表中。

因此,我尝试将它们转换为日期时间,但是我只得到所有记录的日期值和时间值是 00:00:00。源具有每条记录的日期和时间值。下面是我用来将字符串转换为日期时间字符串的代码。

public string ComputeDate(string sSourceData)
{
    string sProcessedDate = string.Empty;
    int iDateValue = ((Convert.ToInt32(sSourceData) / 86400) + 21916);
    Double dDate = Convert.ToInt32(iDateValue);
    DateTime dtDateValue = DateTime.FromOADate(dDate);
    sProcessedDate = dtDateValue.ToString();

    return sProcessedDate;
}

源数据样本和数据表中加载的数据如下

源和数据表

转换 OADate 后的输出如下

最终输出

如果有人可以帮助我为我提供一个解决方案来获取输出以及源中提供的原始时间值,那就太好了。

提前致谢。

标签: c#sas

解决方案


整数比,例如

Convert.ToInt32(sSourceData) / 86400

将产生一个整数。

确保结果包含天分数 ( [0..1]),即时间部分SQL / C#

Double dDate = Convert.ToInt32(sSourceData) / 86400.0 + 21916.0;

推荐阅读