我正在从v4.0.36升级到v4.0.46,我遇到的问题是,通过此API生成的SQL无法正确转换DateTime值:
public static List<T> SqlList<T> (this IDbConnection dbConn, string sql, object anonType = null);
DateTime是一个属性,作为传递给方法的对象的一部分。
在v4.0.36上,DateTime值将导致字符串“yyyy-MM-dd HH:mm:ss”
然而,升级到v4.0.46后,DateTime值现在为“dd / MM / yyyy HH:mm:ss AM”
由于这种依赖日期的查询现在没有返回任何记录,因为MySQL无法识别这种格式。
我缺少配置吗?或者我需要做什么改变才能获得与4.0.36相同的行为?
答案 0 :(得分:2)
现在应该解决此问题from this commit,可从v4.0.47获取,现在available on MyGet支持以下每种调用方式:
class DateTest
{
public DateTime Test { get; set; }
public DateTime? TestNullable { get; set; }
}
using (var db = OpenDbConnection())
{
db.DropAndCreateTable<DateTest>();
var dateTime = new DateTime(2001, 1, 1, 1, 1, 1);
db.Insert(new DateTest{ Test = dateTime, TestNullable = dateTime });
var row = db.SqlList<DateTest>(
"SELECT * FROM DateTest WHERE Test = @dateTime"), new { dateTime });
row = db.SqlList<DateTest>(
"SELECT * FROM DateTest WHERE TestNullable = @dateTime"), new { dateTime });
DateTime? nullDate = dateTime;
row = db.SqlList<DateTest>(
"SELECT * FROM DateTest WHERE TestNullable = @nullDate"), new { nullDate });
}
答案 1 :(得分:0)
根据我对4.0.52的经验,这仍然打破了DateTime的空值?到处都很简单;
SqlServerDialect.Provider.RegisterConverter<DateTime?>(new SqlServerDateTimeConverter());