4

在 SQL Server(T-SQL) 中,您可以将 DateTime 变量转换为十进制值,如下所示:

CONVERT(DECIMAL(20,10),@mytime)
Sample Input: 2012-07-27 08:29:20.000
Sample Output: 41115.3537037037

是否有任何等效的方法可以将 .NET(C# 或 VB)中的 DateTime 转换为相同类型的小数?

我想比较不同日子的时间。

计算

41115.3537037037 % 1 = .3537037037

这将使我能够轻松地比较不同日期的时间。

4

2 回答 2

7

看起来这是“自 1900 年 1 月 1 日以来的天数”。在这种情况下,您将使用:

DateTime epoch = new DateTime(1900, 1, 1);
TimeSpan difference = date - epoch;
double days = difference.TotalDays;
于 2012-07-27T14:59:19.153 回答
0

我知道您指定要比较天数(获取小数部分),但由于标题是如何将 DateTime 转换为小数,以下是如何将整个数值合为一(整数和小数部分)。您可以执行以下操作(VB.NET),它将等效于 SQL Server:

Dim TimeZero As New DateTime(1900, 1, 1)
Dim MyTime As DateTime = DateTime.Parse("2012-07-27 08:29:20.000")
Dim DecResult As Decimal = DateDiff(DateInterval.Day, TimeZero, MyTime) + (MyTime.TimeOfDay.TotalSeconds / (24*3600))
于 2018-02-05T21:27:27.577 回答