我的服务器具有MM / dd / yyyy格式。我正在保存用户的调查,其中包括他们提交调查的日期。但是某些用户遇到了一个错误,即将nvarchar数据类型转换为日期时间数据类型是超出范围的值。这是我使用datetime.now保存调查日期的时间。当我检查他们的计算机时,它们具有不同的日期格式。因此,我尝试将其更改为服务器日期格式,并且可以使用,但是这些用户不想更改其日期格式,因此有什么可能的解决方案,而无需更改计算机中的日期格式。
.AddWithValue("@SurveyDate", System.Data.SqlDbType.DateTime).Value = DateTime.NOw
.AddWithValue("@EDate", System.Data.SqlDbType.DateTime).Value = DateTime.Now
答案 0 :(得分:1)
您的代码应为:
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
并指定所需的数据类型。