【问题标题】:Entity Framework stored procedure error with DateTimeDateTime 的实体框架存储过程错误
【发布时间】:2010-11-10 13:20:28
【问题描述】:

嗨 我收到一个错误 '从字符串转换日期和/或时间时转换失败' 使用 EF4 调用存储过程时。

我从我的 c# 2 DateTimes 像这样传递

@FromDate='2010-11-10 12:30:14.2558729' @ToDate='2010-11-10 12:30:15.1169590'

我怎样才能防止这个错误?

如果我在我的 UI 中执行以下操作,它会起作用

FromDate = new DateTime   (SelectedFromDate.Year,SelectedFromDate.Month,SelectedFromDate.Day),
ToDate = new DateTime(SelectedToDate.Year, SelectedToDate.Month, SelectedToDate.Day),

感谢您的任何建议

【问题讨论】:

    标签: sql-server entity-framework


    【解决方案1】:

    将小数秒的位数减少到三位。试试看……

    你想做什么:

    select convert(datetime,'2010-11-10 12:30:14.2558729')
    --                                           ^^^^^^^
    

    输出:

    -----------------------
    Msg 241, Level 16, State 1, Line 1
    Conversion failed when converting datetime from character string.
    

    仅使用 3 位十进制数字:

    select convert(datetime,'2010-11-10 12:30:14.255')
    --                                           ^^^
    

    输出:

    -----------------------
    2010-11-10 12:30:14.257
    
    (1 row(s) affected)
    

    【讨论】:

    • 在 sql 中有效,但是如果我通过 2 个参数 @FromDate 和 @ToDate.If 在给它转换的机会之前失败,我将如何在 SP 中进行操作
    • 在调用存储过程之前在 C# 中缩短字符串或将存储过程参数数据类型设为 varchar(27),然后将输入参数的前 23 个字符存储到 @987654325 的局部变量中@ 类型,例如:DECLARE @FromDate_D datetime; set @FromDate_D=LEFT(@FromDate,23),其中 @FromDate 是您的 varchar(27) 输入参数。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-02
    • 1970-01-01
    • 1970-01-01
    • 2015-05-14
    • 2013-03-19
    相关资源
    最近更新 更多