如何使用 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 查询?

如何使用 linq 从 varchar(32) 类型的日期时间列中仅获取日期

您可以将

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