SQL 服务器 date/time 不一致
SQL SERVER date/time inconsistency
我在 SQL 服务器中有一个数据类型为日期时间的字段。我将日期简单地选择为
select impDate from tbl1
发生的事情是 - am/pm 部分不一致...请看图片
正如所见 - 它似乎适用于 12:00 及以上的所有内容,直到达到 12:59 - 此时每个小时都被识别为上午 - 当 2:46 和 3:17 应该是下午。
这是 sql 服务器中的样子...
2016-10-18 10:25:16.000
编辑:
DateTime.Now.ToString("MM/dd/yyyy hh:mm:ss")
// standard (must provide AM/PM, AM assumed if not explicitly provided)
DateTime.Now.ToString("MM/dd/yyyy hh:mm:ss");
对
// military (24 hour clock)
DateTime.Now.ToString("MM/dd/yyyy HH:mm:ss");
也许需要考虑的更重要的事情是,您不应该将 strings
插入 datetime
,而应该插入 datetimes
。您的 ToString()
暗示这就是您要插入数据库的内容,这是问题根源的一部分。
保持数据类型为正确的数据类型,这将消除问题。
我将根据问题中的信息进行猜测,您正在使用当前日期和时间的字符串值,使用 hh
检索 12 小时格式的小时数。如果您使用字符串连接来构建您的 sql( 非常糟糕,您应该使用参数) 这将解释问题。
但是,修复方法不是使用军事时间来插入日期,而是使用参数化查询并将 DateTime 实例直接传递给参数值。
这是一个简单的示例,说明如何使用参数来避免将来出现此类问题。
Public Function SomeFunction(ByVal dateToInsert As DateTime)
Dim sql As String = "INSERT INTO tbl1 (impDate) VALUES(@impDate)"
Using cn As New SqlConnection("Your connection string here"), _
cmd As New SqlCommand(sql, cn)
cmd.Parameters.Add("@impDate", SqlDbType.DateTime).Value = dateToInsert
cmd.ExecuteNonQuery()
End Using
End Function
我在 SQL 服务器中有一个数据类型为日期时间的字段。我将日期简单地选择为
select impDate from tbl1
发生的事情是 - am/pm 部分不一致...请看图片
正如所见 - 它似乎适用于 12:00 及以上的所有内容,直到达到 12:59 - 此时每个小时都被识别为上午 - 当 2:46 和 3:17 应该是下午。
这是 sql 服务器中的样子...
2016-10-18 10:25:16.000
编辑:
DateTime.Now.ToString("MM/dd/yyyy hh:mm:ss")
// standard (must provide AM/PM, AM assumed if not explicitly provided)
DateTime.Now.ToString("MM/dd/yyyy hh:mm:ss");
对
// military (24 hour clock)
DateTime.Now.ToString("MM/dd/yyyy HH:mm:ss");
也许需要考虑的更重要的事情是,您不应该将 strings
插入 datetime
,而应该插入 datetimes
。您的 ToString()
暗示这就是您要插入数据库的内容,这是问题根源的一部分。
保持数据类型为正确的数据类型,这将消除问题。
我将根据问题中的信息进行猜测,您正在使用当前日期和时间的字符串值,使用 hh
检索 12 小时格式的小时数。如果您使用字符串连接来构建您的 sql( 非常糟糕,您应该使用参数) 这将解释问题。
但是,修复方法不是使用军事时间来插入日期,而是使用参数化查询并将 DateTime 实例直接传递给参数值。
这是一个简单的示例,说明如何使用参数来避免将来出现此类问题。
Public Function SomeFunction(ByVal dateToInsert As DateTime)
Dim sql As String = "INSERT INTO tbl1 (impDate) VALUES(@impDate)"
Using cn As New SqlConnection("Your connection string here"), _
cmd As New SqlCommand(sql, cn)
cmd.Parameters.Add("@impDate", SqlDbType.DateTime).Value = dateToInsert
cmd.ExecuteNonQuery()
End Using
End Function