c# - 使用 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 后的输出如下
如果有人可以帮助我为我提供一个解决方案来获取输出以及源中提供的原始时间值,那就太好了。
提前致谢。
解决方案
整数比,例如
Convert.ToInt32(sSourceData) / 86400
将产生一个整数。
确保结果包含天分数 ( [0..1]
),即时间部分SQL / C#
Double dDate = Convert.ToInt32(sSourceData) / 86400.0 + 21916.0;
推荐阅读
- python - Numpy Hstack 尺寸未对齐
- python-3.x - 使用掩码添加计算列以绕过 ValueError
- c# - 如何使用 C# 在控制台应用程序中执行命令或进程
- c++ - C++ 中尽可能多的 const
- java - Java中的字符串和列表操作
- excel - 条件格式规则不适用于一个单元格
- python - 噪声过滤器(Savitzki Golay)和插值(interp1d)Python有什么区别
- angular - ngIf 多个条件不适用于 router.url
- ios - 如果所有文本字段都完整,则在 swift 4 中正确显示消息?
- android - 如何使用 webview 从资产中保存文件