首页 > 解决方案 > 无法从 c# dapper 代码将日期时间作为空值插入 Nexus 数据库

问题描述

使用 dapper 类到 nexus 数据库将 DateTime 值作为 null 插入 Nexus Db 时遇到以下问题。

public const string SqlQuery = @"INSERT INTO Test(test1, test2, test3, 
Date1,Date2))
                                                       Values(?test1?,? 
test2?,?date1?,?date2?)";

 public void InsertTest(string test1,string test2, DateTime? date1,DateTime? 
date2)
{
var params= new DynamicParameters(
            new
            {
test1= "",
test2 ="",
Date1 = cDate.HasValue ? cDate.Value.Date : (DateTime?)null,
Date2 = cDate1.HasValue ? cDate2.Value.Date : (DateTime?)null,

}
ExecConn(SqlQuery , params);
}

ERROR [HY000] 查询返回错误(ODBC 状态:HY000)

错误:日期编码的参数无效

查询:t 60000;插入测试(test1,test2,test3,Date1,Date2)值(:Param1,:Param2,:Param3,:Param4,:Param5)

标签: c#nexusdb

解决方案


尝试使用 DateTime.MinValue 而不是 (DateTime?)null

public void InsertTest(string test1,string test2, DateTime? date1,DateTime? 
date2)
{
 var params= new DynamicParameters(
        new
        {enter code here
 test1= "",
 test2 ="",`enter code here`
 Date1 = cDate.HasValue ? cDate.Value.Date :   DateTime.MinValue.Date,
 Date2 = cDate1.HasValue ? cDate2.Value.Date :   DateTime.MinValue.Date,

 }
 ExecConn(SqlQuery , params);
 }

推荐阅读