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 格式,然后运行所需的查询。有什么想法吗?

C# MySQL LINQ DateTime conversion

把它变成一个日期时间 - 所以

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)

好的,问题是表格将字段定义为日期而不是日期时间,因此没有进行匹配。

使用了日期时间.日期,并且进行了匹配。