Dapper返回反转日期格式

时间:2014-07-18 09:45:45

标签: c# sql orm dapper

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是否有预定义的日期类型格式才能返回? 如果是,如何更改?

感谢。

1 个答案:

答案 0 :(得分:1)

问题似乎是您使用string代替received,而不是DateTime。日期/时间没有格式,直到您实际强制它们成为字符串 - 此时它们不再是日期/时间。日期/时间只是一个数字

作为最后的努力,如果所有内置转换都用完了,那么dapper会使用Convert.ChangeType来解决类型之间的问题。这将导致在这种情况下使用常规ToString()。如果你不想要这个(你不应该这样):声明receivedDateTime

public DateTime received { get; set; }

同样,来自评论:

  

d1和d2是字符串

他们不应该;它们也应该是DateTime

DateTime d1 = ..., d2 = ...

或者至少,您应该在数据访问代码中解析它:

new { d1 = [someparse(d1)], @d2 = [someparse(d2)], }

其中[someparse]可能涉及DateTime.ParseDateTime.ParseExact