首页 > 解决方案 > 无法使用 SQL Server 日期格式保存不同格式的日期

问题描述

我的服务器有 MM/dd/yyyy 格式。我正在保存用户的调查,其中包括他们提交调查的日期。但是一些用户得到了一个错误,即将 nvarchar 数据类型转换为日期时间数据类型导致的值超出范围。这是我使用 datetime.now 保存调查日期的时候。当我检查他们的计算机时,它们的日期格式不同。因此,我尝试将其更改为服务器日期格式并且它可以工作,但是这些用户不想更改他们的日期格式,所以是否有任何可能的解决方案而不更改他们计算机中的日期格式。

            .AddWithValue("@SurveyDate", System.Data.SqlDbType.DateTime).Value = DateTime.NOw
            .AddWithValue("@EDate", System.Data.SqlDbType.DateTime).Value = DateTime.Now

标签: sql-servervb.net

解决方案


您的代码应该是:

 Dim dt As Date = DateTime.Today

.Add("@SurveyDate", System.Data.SqlDbType.DateTime).Value = dt
.Add("@EDate", System.Data.SqlDbType.DateTime).Value = dt

请注意,我已经更正了您对String代替的使用Date以及更正您对AddWithValue代替的使用Add。如果您要使用,请AddWithValue正确使用它,即指定值:

.AddWithValue("@SurveyDate", dt)
.AddWithValue("@EDate", dt)

想法AddWithValue是您提供值并从中推断出数据类型。问题在于可能会推断出错误的数据类型。例如,SQL Server 有date,datetime以及datetime2其他日期。在这种情况下会推断出哪个?最好不要假设或关心,只需调用Add并指定您想要的数据类型。


推荐阅读