我在表格中有一个列为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.CompareTo(to_Date)< = 0)
此处from_Date和to_Date变量包含的值如2016-01-03。
所以,我需要从PSR_LOAD_DATE_TIME中删除时间部分。
如何编写Linq查询?
答案 0 :(得分:1)
您可以将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());
}
}
答案 1 :(得分:0)
我想你用EF来查询这个。
所以你应该试试
DbFunctions.TruncateTime