在使用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);
}
它的格式字符串类型为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
。