【发布时间】:2018-03-06 13:42:29
【问题描述】:
我有一个表,其中包含用户在系统上执行的操作的完整历史记录。我需要以datedescending 的顺序检索所有这些记录。问题是我在表格中保存了date 格式为string,因为我的应用程序支持多文化。我不知道这是个好主意还是坏主意,现在我需要按日期descending 顺序检索它们。所以,当我检索数据时,我试图将date 转换为DateTime 格式,但我遇到了invalid date format 的异常。在我的数据库中,日期为dd-MM-yyyy 格式。以下是我的查询:
db.Histories.ToList.OrderByDescending(x=> Convert.ToDateTime(x.Date));
【问题讨论】:
-
我会修复数据库。将日期存储为数据库中的某种日期(想想
date或datetime)表示。这使得它可以针对任何地区进行格式化,可以处理时区,并且可以正确排序,而无需将字符串转换为日期以及随之而来的所有麻烦。 -
这是最好的解决方案。但是,目前有什么办法可以解决这个问题吗?
-
如果您从中得到“无效的日期格式”,那是因为 .NET 不知道如何解析数据库中日期的格式。您可能需要使用
DateTime.ParseExact告诉.NET 如何处理它。 -
每当我读到 “在我的数据库中,日期是 XY 格式” 我都会哭。为什么不在数据库中使用
date或datetime? -
即使使用
ParseExact,我也会高度鼓励您尽快在数据库中实施合理的日期处理。您可能会花费更多时间来支持字符串日期,然后在表中创建一个单独的日期时间列,创建一个补丁 SQL 脚本来迁移数据并删除字符串列。这样就完成了,您无需花时间破解日期解析。
标签: list entity-framework linq date-conversion