在使用SQL日期时,字符串未被识别为有效的日期时间

本文关键字:日期 识别 有效 时间 字符串 SQL | 更新日期: 2023-09-27 18:12:17

我正在使用一个SQL Server数据库中的日期,该数据库上有毫秒,就像这里的例子"2016-10-07 21:00:29 . 987",它被保存在一个隐藏的字段中。

这是记录数据的方式,这是数据库更新的子句之一。

当我尝试将其作为参数传递到数据库时,我得到"字符串未被识别为有效的DateTime"错误,当使用

var d = DateTime.ParseExact(hfDateLocked.Value.ToString(), "yyyy-MM-dd HH:mm:ss.fff", CultureInfo.InvariantCulture);

如果我删除毫秒,这工作得很好,但由于它在数据库中与毫秒,这是三个子句'条件之一,我需要通过这个。

任何帮助都将感激不尽。

编辑1

SqlParameter lockTimParam = new SqlParameter("@LockTime", SqlDbType.DateTime);
if (string.IsNullOrEmpty(hfLockTime.Value.ToString()))
{
    lockTimParam.Value = DBNull.Value;
}
else
{
    lockTimParam.Value = DateTime.ParseExact(hfLockTime.Value.ToString(), "yyyy-MM-dd hh:mm:ss:fff", CultureInfo.InvariantCulture);
}

在使用SQL日期时,字符串未被识别为有效的日期时间

它的格式字符串类型为0,它不匹配正在传入的DateTime字符串的格式(只是秒和毫秒之间的符号)

.fff应为:fff

var result = System.DateTime.ParseExact("2016-10-07 21:00:29:987", "yyyy-MM-dd HH:mm:ss:fff", System.Globalization.CultureInfo.InvariantCulture);

或者如果DateTime字符串更改为使用.而不是:,则此工作

var result = System.DateTime.ParseExact("2016-10-07 21:00:29.987", "yyyy-MM-dd HH:mm:ss.fff", System.Globalization.CultureInfo.InvariantCulture);

。返回的DateTime字符串中的毫秒由句点(.)分隔,然后在格式字符串中使用.fff,如果它是冒号(:),则在格式字符串中使用:fff