如何使用 linq 从 varchar(32) 类型的日期时间列中仅获取日期
本文关键字:时间 日期 取日期 获取 类型 linq 何使用 varchar | 更新日期: 2023-09-27 18:30:52
>我在表格中有一列作为PSR_LOAD_DATE_TIME其中包含格式的值 2016-01-09 14:06:19
但是该列的类型为 varchar(32)。
我有一个 linq 查询,可以将PSR_LOAD_DATE_TIME与特定日期进行比较。但它与时间相比PSR_LOAD_DATE_TIME。
其中 (t0.PSR_LOAD_DATE_TIME。CompareTo(from_Date)>= 0) && (t0.PSR_LOAD_DATE_TIME。比较(to_Date) <= 0)
这里from_Date和to_Date变量包含类似 2016-01-03 的值。
因此,我需要从PSR_LOAD_DATE_TIME中删除时间部分。
如何为此编写 Linq 查询?
您可以将
PSR_LOAD_DATE_TIME 中的 DateTime 表达式解析为实际的 DateTime,然后仅使用该 DateTime 对象的 Date 部分。
void Main()
{
List<string> dates = new List<string>();
dates.Add("2016-01-18 12:05:12");
string from_Date = "2016-01-16";
string to_Date = "2016-01-18";
var date = from d in dates where (DateTime.ParseExact(d, "yyyy-MM-dd HH:mm:ss", null)
.Date.CompareTo(DateTime.ParseExact(from_Date, "yyyy-MM-dd", null)) >= 0 &&
DateTime.ParseExact(d, "yyyy-MM-dd HH:mm:ss", null)
.Date.CompareTo(DateTime.ParseExact(to_Date, "yyyy-MM-dd", null)) <= 0)
select d;
foreach(var d in date) {
Console.WriteLine(d.ToString());
}
}
我想你使用 EF 来查询这个。
所以你应该尝试
DbFunctions.TruncateTime