C# MySQL LINQ DateTime conversion
本文关键字:conversion DateTime LINQ MySQL | 更新日期: 2023-09-27 18:33:06
我正在尝试使用 LINQ 和 C# 从 mySQL DB 检索记录。
c# 代码中的日期是一个字符串:23-01-2010
我需要将其转换为 DateTime 格式为 2010-01-23(mySQL 默认日期时间格式),否则查询不会返回任何记录,目前它会错误地指出字符串无法与日期时间(行。发行日期)如果我将字符串转换为日期时间 (C#),那么它不是 yyyy-MM-dd 的 mySQL 日期时间格式
String endDate = "23-01-2010";
var query = (from row in uow.UserPersonalLicenseDetails
where (endDate >= row.DateOfIssue && endDate <= row.DateOfExpiry)
select row)
这是一个如此标准的查询,在 LINQ 中很难做到似乎很疯狂。似乎将任何像 CompareTo 等方法放在 where 子句中都会导致"搜索在这种情况下工作的类"的错误
我现在想知道最好的攻击方式是否是在数据库中编写存储过程。 然后,这可以将 C# 日期时间作为参数,将其转换为 mySQL 格式,然后运行所需的查询。有什么想法吗?
把它变成一个日期时间 - 所以
var myDate = DateTime.Parse(endDate);
然后
myDate.ToString("yyyy-MM-dd");
----------或这个:
var myDate = DateTime.Parse(endDate);
var query = (from row in uow.UserPersonalLicenseDetails
where ((myDate.CompareTo(row.DateOfIssue)>=0 && (myDate.CompareTo(row.DateOfExpiry)<=0)
select row
只需将日期字符串转换为DateTime
然后在 LINQ 中将字符串转换为返回的字符串DateTime
以便进行比较。我使用了ParseExact
,因为我们需要确保我们解析为 MySQL 存储日期的确切格式,即 yyyy-MM-dd hh:mm
.
像这样:
var endDate = DateTime.Parse("23-10-2010").ToString("yyyy-MM-dd hh:mm");
var formattedEndDate = DateTime.Parse(endDate);
//you could cut that to one line by putting the date in said format in the first place
var query = (from row in uow.UserPersonalLicenseDetails
where formattedEndDate >= row.DateOfIssue
&& formattedEndDate <= row.DateOfExpiry
select row)
好的,问题是表格将字段定义为日期而不是日期时间,因此没有进行匹配。
使用了日期时间.日期,并且进行了匹配。