c# - 字符串未被识别为有效的 DateTime
问题描述
我有一个存储过程,它为结果中的 DATE 列返回 NULL 和正确的 Date 值。但是,在转换结果中的 NULL 值时,我收到错误“字符串未被识别为有效日期时间”。其他正确的日期值转换得很好。
var dataList = new List<Model>();
while (sqlDataReader != null && await sqlDataReader.ReadAsync())
{
dataList.Add(new Model
{
MyDate = DateTime.Parse(sqlDataReader["DateColumn"].ToString()),
});
}
下面是模型——
public class AgreementTrackingReportViewModel
{
public DateTime? MyDate { get; set; }
}
SP返回值如
NULL
2019-01-28
解决方案
试试这个:
MyDate = sqlDataReader["DateColumn"] == DBNull.Value
? null
: (DateTime?)sqlDataReader["DateColumn"]
如果您的列是有效的 DATE SQL 列,则应将其转换为 DateTime。
确保检查DBNull.Value
. 也可以用Convert.IsDBNull
orSqlDataReader.IsDBNull
方法来完成。
如果您的存储过程出于某种奇怪的原因将“DateColumn”中的日期和 NULL 转换为 (n)varchar,您可以尝试以下代码:
MyDate = sqlDataReader["DateColumn"] == DBNull.Value
||
sqlDataReader["DateColumn"] == "NULL"
? null
: (DateTime?)DateTime.Parse((string)sqlDataReader["DateColumn"])
推荐阅读
- ros - dji 矩阵 100 使用 GPS 拔出
- c++ - 未定义对符号“_ZN3pcl7console5printENS0_15VERBOSITY_LEVELEPKcz”的引用
- java - Web app using embedded Tomcat only works in IDE
- html - 我的媒体查询是否正确
- c++ - 从类中打印变量
- java - 从动态更新的 Application.properties 中读取
- javascript - 使用 getText() 的量角器中的断言错误
- powerbi - 从两个切片器中查找最大月份
- r - 过滤R中的记录
- php - 在 Symfony 3.4 中上传文件 - 更新操作 - 我应该如何编程 editAction?