asp.net - 无法将参数值从字符串转换为日期时间

标签 asp.net sql-server datetime datepicker

我知道这是一个常见错误,但我需要一些关于摆脱此错误的最佳方法的解释。

我有一个日期选择器用于存储出生日期。

日期选择器

<script>
    $(document).ready(function () {
        $(".datepicker").datepicker({
            dateFormat: "yy-mm-dd",
            changeMonth: true,
            changeYear: true,
            yearRange: "-100:-1",
            defaultDate: "-25y"
        });
    });
</script>

我将其作为参数传递以存储在数据库中,如下所示:

cmd.Parameters.Add("@DOB", SqlDbType.Date).Value = txtdob.Value;

工作得很好。 现在在编辑页面上,我将 DOB 从数据库插入到日期选择器,如下所示:

txtdob.Value = ((DateTime)rdr["DOB"]).ToString("dd-MM-yyyy");

仍然工作正常。我看到了预期的 DOB。 现在我只需更改其他内容(例如用户的姓名或城市),然后单击“更新”按钮,并将 DOB 传递为:

cmd.Parameters.Add("@DOB", SqlDbType.DateTime).Value = txtdob.Value;

我收到一个错误

Failed to convert parameter value from a String to a DateTime.

最佳答案

日期选择器日期格式:dateFormat:“yy-mm-dd”, 但您正在编辑 ((DateTime)rdr["DOB"]).ToString("dd-MM-yyyy");

所以,更新后它不起作用。

yyyy-MM-dd 格式有效,但 dd-MM-yyyy 无效,这是针对某些文化格式问题。

所以,您可以尝试使用:DateTime.Parse() 或者

cmd.Parameters.Add("@DOB", SqlDbType.DateTime).Value =
DateTime.ParseExact(txtdob.Value,
"Your_Date_Format(e.g dd-mm-yyyy)",
CultureInfo.InvariantCulture);

关于asp.net - 无法将参数值从字符串转换为日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32985507/

相关文章:

c# - 是否可以在没有用户登录的情况下更改异常(exception)用户?

asp.net - 提供旧文件的 Azure Web 应用程序

asp.net - Docker 错误 : failed to register layer: Error processing tar file(exit status 1): "...msader15.dll.mui: no such file or directory"

Javascript SessionStorage 项目在第一个函数调用中不可用

sql-server - 排序列上的索引

c# - 从 Datarow 转换 SqlHierarchyID

sql-server - 比较sql server中的2个浮点值

python - 不支持的格式字符 'm'

javascript - 在一行中添加 JavaScript 中的日期

python - pandas 数据框滚动窗口中的最大日期