比较 Date / DateTime ine Entity SQLWhere 子句

发布于 2024-07-29 23:23:04 字数 514 浏览 4 评论 0原文

我有一个方法,它接受 ObjectQuery 并根据它是否接收各种过滤器参数的值向其中添加Where 子句。 该方法必须返回一个 ObjectQuery。 我如何进行基本的日期比较,例如 dateX < 日期Y。

这是我当前的代码:

if (myDateFilter != null)
{
    query = query.Where(
        string.Format(
            "it.ExpireDate < cast('{0}' as System.DateTime)",
            myDateFilter));
}

当 myDateFilter 的值为 DateTime.Now 时,此代码显示: System.Data.SqlClient.SqlException:将 varchar 数据类型转换为 datetime 数据类型导致值超出范围。

所有其他参数都是字符串或整数过滤器,因此实现起来不成问题。 有任何想法吗??

I have a method which accepts an ObjectQuery and adds Where clauses to it depending on whether it receives values for various filter parameters. The method has to return an ObjectQuery. How can i do a basic Date comparison e.g. where dateX < dateY.

This is my current code:

if (myDateFilter != null)
{
    query = query.Where(
        string.Format(
            "it.ExpireDate < cast('{0}' as System.DateTime)",
            myDateFilter));
}

With myDateFilter having a value of DateTime.Now, this code says: System.Data.SqlClient.SqlException: The conversion of a varchar data type to a datetime data type resulted in an out-of-range value.

All the other paramaters are string or integer filters so weren't a problem to implement. Any ideas??

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

世界如花海般美丽 2024-08-05 23:23:06

您必须知道用户输入数据的格式。 看一下 DateTime.Parse 和 ParseExact 函数。

http://msdn.microsoft.com/en-us/library/w2sa9yss。 aspx

如果您知道格式,您可以使用它们将任何输入字符串解析为有效的日期时间。 还有一些文化不变量。

防止这种情况的一个很好的保护措施是始终格式化 DateTimePicker 等中的日期以使用长格式 ( YYYYMMDD HH:MM:SS )。 有一个格式字符串告诉 .Net 这样做,但我现在不记得了。

如果您接受用户输入的字符串,则必须考虑 CurrentCulture(上面的相同链接有帮助)。

You will have to know the format that the user input the data. Take a look at the DateTime.Parse and ParseExact functions.

http://msdn.microsoft.com/en-us/library/w2sa9yss.aspx

You can use them to parse any input string to a valid datetime if you know the format. There are some culture invariants as well.

A good protection against this is to always format the date from a DateTimePicker, etc to use the long format ( YYYYMMDD HH:MM:SS ). There is a format string to tell .Net to do that, but I can't remember it right now.

If you are accepting the strings from user input you will have to take the CurrentCulture into account (same link above has help).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文