C# 如何使用LINQ从varchar列查询日期范围
我继承了一个大型SQL Server数据库,它有一个特定的表,该表有一个特定的日期列,该列是yyyyMMdd日期字符串格式的varchar(8)数据类型。我无法理解为什么它不是datetime数据类型或类似的东西。(可能是为了节省空间?早就将遗留数据库移植到SQL Server了?) 为了避免对date Want be字段过于紧张,使用实体框架(DBContext w/LINQ)从该列中使用单个日期获取行非常简单,如下所示:C# 如何使用LINQ从varchar列查询日期范围,c#,sql-server,linq,entity-framework,date,C#,Sql Server,Linq,Entity Framework,Date,我继承了一个大型SQL Server数据库,它有一个特定的表,该表有一个特定的日期列,该列是yyyyMMdd日期字符串格式的varchar(8)数据类型。我无法理解为什么它不是datetime数据类型或类似的东西。(可能是为了节省空间?早就将遗留数据库移植到SQL Server了?) 为了避免对date Want be字段过于紧张,使用实体框架(DBContext w/LINQ)从该列中使用单个日期获取行非常简单,如下所示: var rows = cxt.TableOfRandomDateCol
var rows = cxt.TableOfRandomDateColumn.Where(x => x.Date == myDateStr).ToList();
这很容易。但是,如果我想从本专栏中获取一系列日期,该怎么办?做这样的事情最好的方法是什么?yyyyMMdd格式的日期按字母顺序和数字顺序排列正确,因此您可以像对任何其他字符串列一样使用范围选择器 试试这个:
var rows = cxt.TableOfRandomDateColumn.Where(x => x.Date >= myStrDateStr && x.Date <= myStpDateStr).ToList();
var rows=cxt.TableOfRandomDateColumn.Where(x=>x.Date>=myStrDateStr&&x.DateyyyyMMdd格式的日期按字母顺序和数字顺序排列正确,因此您可以像对任何其他字符串列一样使用范围选择器
试试这个:
var rows = cxt.TableOfRandomDateColumn.Where(x => x.Date >= myStrDateStr && x.Date <= myStpDateStr).ToList();
var rows=cxt.TableOfRandomDateColumn.Where(x=>x.Date>=myStrDateStr&&x.Date如果日期的格式是您所说的格式(例如20121025),则它们将被视为已正确排序,并且以下操作应有效:
var rows = cxt.TableOfRandomDateColumn.Where(x => x.Date >= startDate && x.Date <= endDate).ToList();
var rows=cxt.TableOfRandomDateColumn.Where(x=>x.Date>=startDate&&x.Date如果日期的格式与您所说的格式相同(例如20121025),则它们将被视为已正确排序,并且以下操作应有效:
var rows = cxt.TableOfRandomDateColumn.Where(x => x.Date >= startDate && x.Date <= endDate).ToList();
var rows=cxt.TableOfRandomDateColumn.Where(x=>x.Date>=startDate&&x.Date使用自定义格式的ParseExact日期时间方法。然后可以将其与表达式中的日期时间进行比较。使用自定义格式的ParseExact日期时间方法。然后可以将其与表达式中的日期时间进行比较