Dapper以不同于存储在数据库中的格式返回日期类型列。
数据库中的格式----> 2012-05-19 15:27:00.000
dapper返回--------> 19-05-2012 15:27:00.000
var l = this.db.Query<myObject>("select id, received from myTable where( received between @d1 and @d2)",
new { @d1 = d1, @d2 = d2, }).ToList();
string d1 = 2011-01-18 00:00:00
string d2 = 2014-07-18 23:59:59
public class myObjectIs
{
public string id { get; set; }
public string received { get; set; }
}
已收到 - datatime type columm
Dapper是否有预定义的日期类型格式才能返回? 如果是,如何更改?
感谢。
答案 0 :(得分:1)
问题似乎是您使用string
代替received
,而不是DateTime
。日期/时间没有格式,直到您实际强制它们成为字符串 - 此时它们不再是日期/时间。日期/时间只是一个数字。
作为最后的努力,如果所有内置转换都用完了,那么dapper会使用Convert.ChangeType
来解决类型之间的问题。这将导致在这种情况下使用常规ToString()
。如果你不想要这个(你不应该这样):声明received
为DateTime
:
public DateTime received { get; set; }
同样,来自评论:
d1和d2是字符串
他们不应该;它们也应该是DateTime
:
DateTime d1 = ..., d2 = ...
或者至少,您应该在数据访问代码中解析它:
new { d1 = [someparse(d1)], @d2 = [someparse(d2)], }
其中[someparse]
可能涉及DateTime.Parse
或DateTime.ParseExact