Dapper 返回反转日期格式

Posted

技术标签:

【中文标题】Dapper 返回反转日期格式【英文标题】:Dapper return reversed date format 【发布时间】:2014-07-18 09:45:44 【问题描述】:

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; 

 

已收到 - 数据时间类型列

Dapper 是否有预定义的日期类型格式来返回? 如果是,如何更改?

谢谢。

【问题讨论】:

如果数据库中的数据类型是日期,不用管它。 c# 有可用的日期格式化工具。使用一个。 DateTime 值没有格式。是您的程序以“格式”显示 DateTime 值 但是,如果字段 received 是日期,为什么要将其存储在字符串中?改用 DateTime 变量 数据库中的日期时间没有格式;这是一个数字。您是否将其存储为字符串?还是作为日期时间? 另外:这里的d1d2 究竟是什么?他们是string?或DateTime ?再说一遍:究竟received 列的定义类型是什么? 更新了我的 qyestion:d1 和 d2 是字符串,接收是数据时间 【参考方案1】:

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

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

public DateTime received  get; set; 

同样,来自 cmets:

d1 和 d2 是字符串

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

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

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

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

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

【讨论】:

以上是关于Dapper 返回反转日期格式的主要内容,如果未能解决你的问题,请参考以下文章

json返回的日期格式怎么转换

“反转”错误的解析日期

Swift 日期格式返回错误的日期

jquery 返回json格式日期的转换

SpringBoot 修改返回日期格式

各种日期格式化返回