新Web服务器上的日期时间问题

时间:2017-08-24 07:57:10

标签: asp.net vb.net iis

我们最近搬到了新的网络服务器。旧的Web服务器具有Windows Server 2008 R2,新的Web服务器具有Windows Server 2012 R2。数据库表和数据已移过,所有列保持不变。

问题在于测试网站的登录页面。它在旧的Web服务器上运行良好,但在新服务器上我们收到此错误:

The conversion of a nvarchar data type to a datetime data type resulted in an out-of-range value. The statement has been terminated.

新版SQL Server显然存在问题,因为代码是相同的:

Dim strStartTime = DateTime.Now.ToString("dd/MM/yyyy HH:mm")

Dim strConnx As String = "Data Source=Server;Initial Catalog=TEST;User Id=user;Password=password;"
        Dim cmdx As New SqlClient.SqlCommand("Insert into [LoginLog]([LogDate], [Consultant], [BU])VALUES (@LogDate, @Consultant, @BU)", New SqlClient.SqlConnection(strConnx))
        cmdx.Connection.Open()
        cmdx.Parameters.AddWithValue("@LogDate", strStartTime)
        cmdx.Parameters.AddWithValue("@Consultant", txtUserName.Text)
        cmdx.Parameters.AddWithValue("@BU", Session("BU"))
        cmdx.ExecuteScalar()
        cmdx.Connection.Close()

我们尝试了各种选项(在SQL服务器和Web服务器上设置日期格式,但是无法解决它 - 请帮忙,谢谢

1 个答案:

答案 0 :(得分:2)

这不是服务器的问题。事实上,它并没有出现在另一台服务器上,这意味着你很幸运。除非出于显示或序列化的目的,否则切勿创建String来表示实际上不会发送文本的数据。在这种情况下,您从.NET DateTime开始,并希望将其发送到SQL Server datetime列。中间任何地方都不应该有任何文字。不要这样做:

Dim strStartTime = DateTime.Now.ToString("dd/MM/yyyy HH:mm")

那是你的问题。如果您想将DateTime四舍五入到最接近的分钟,请执行以下操作:

Dim currentTime = Date.Now
Dim startTime = currentTime.Date.AddHours(currentTime.Hours).AddMinutes(currentTime.Minutes)

然后使用该二进制DateTime值作为参数值。没有转换意味着没有转换问题。