【问题标题】:Date conversion error in SqlSql中的日期转换错误
【发布时间】:2012-12-31 10:01:23
【问题描述】:

我得到错误:

从字符串转换日期和/或时间时转换失败。

我这样调用存储过程:

var result = (from x in db.spStoredProc(sStart, sEnd) select x).ToList();

其中sStartsEnd 是具有此值的字符串:

sStart = "CONVERT(date,GETDATE())"

sEnd = "DATEADD(d,1,CONVERT(date,GETDATE()))"

存储过程有两个varchar(max)类型的参数

在存储过程中,我进行左连接并像这样使用它们:

where date_expire >= @sStartSQL AND date_expire < @sEndSQL

为什么我会收到错误消息?

【问题讨论】:

  • 您可能正在混合使用日期格式(例如美国和欧盟),因此当您尝试从字符串转换时它会失败。
  • @ChrisF 好的,如何解决这个问题?
  • 将所有日期存储为日期(而不是字符串),并确保在与字符串相互转换时正确设置了区域设置。
  • 您使用的是哪个 DBMS? SQL 不是产品 - 它是一种查询语言。

标签: c# sql entity-framework


【解决方案1】:

您只能将文字作为参数传递。所以 SQL Server 从字面上尝试将其转换为日期:

sEnd = "DATEADD(d,1,CONVERT(date,GETDATE()))"

相反,通过:

sEnd = DateTime.Now.AddDays(1).ToString("yyyy-MM-dd HH:mm:ss")

作为参数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-01
    • 2011-07-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多