首页 > 解决方案 > 不完整的 DateTime 与完​​整的 DateTime 比较

问题描述

我的 SQL Server 数据库中有一个数据类型列。它的签名如下: date (yyyy-mm-dd) 因此另一列 tinyint 代表小时。而另一个表包含完整的日期时间列 (yyyy-mm-dd hh:mm:ss.fff) 没有 mm,ss,fff 值。一切都在 0. 但小时就在那里..

我需要将这两者与实体框架进行比较。

我知道使用两个日期时间会很容易,但事实就是如此

现在我的 C# 代码中有一个模型。它们都是 DateTime 类型。而且我不知道如何正确比较它们。如果我可以创建一个匿名类型,那就太好了,我可以将这个 tinyint(或 C# 中的字节)添加到这个新的(另一个 DateTime)并从小时列中添加小时。但..

The property 'System.DateTime.Hour' has no setter

我不知道该怎么做。互联网上没有太多关于此的信息。

真的无法比拟吗?或者有办法做到这一点?

标签: c#sql-serverentity-frameworkdatetime

解决方案


我不确定你想要做什么,但是:如果你想在现有的 DateTime 中添加小时,你需要在这个 DateTime 中添加一个 TimeSpan。

var date = DateTime.Now;

date = date + TimeSpan.FromHours(5); // adds 5 hours to the date

您可以将“5”替换为您的 tinyint 值。

编辑 当您似乎有点难以理解我的简单示例时,代码比您应该拥有的代码更接近:

DateTime alreadyCompleteDate = ... // get the value from your database complete datetime column

DateTime incompleteDate = ... // get the value from your database incomplete datetime column
int hours = ... // get the number of hours to add to incompleteDate from your database tinyint column

DateTime completeDateTime = incompleteDate + TimeSpan.FromHours(hours);

// or whatever comparison you willing to do
var comparisonResult = alreadyCompleteDate < completeDateTime; // this works

推荐阅读