C# 简洁的返回反向日期格式
Dapper以不同于存储在数据库中的格式返回日期类型列 数据库中的格式-->2012-05-19 15:27:00.000 dapper返回-->19-05-2012 15:27:00.000C# 简洁的返回反向日期格式,c#,sql,orm,dapper,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)",
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是否具有要返回的日期类型的预定义格式?
如果是,如何更改
谢谢。问题似乎是您使用的是接收字符串,而不是日期时间。日期/时间没有格式,直到您实际强制它们成为字符串-此时它们不再是日期/时间。日期/时间只是一个数字 作为最后的努力,如果所有内置转换都已用尽,dapper将使用Convert.ChangeType在类型之间切换。这将导致在这种情况下使用常规ToString。如果您不希望这样,也不应该这样:将received声明为DateTime: 同样,从评论中可以看出: d1和d2是字符串 不应该是,;它们也应该是DateTime: 或者至少,您应该在数据访问代码中解析它:
new { d1 = [someparse(d1)], @d2 = [someparse(d2)], }
其中,[someparse]可能涉及DateTime.Parse或DateTime.ParseExact如果数据库中的数据类型是date,不要担心。c提供了日期格式化工具。使用一个。DateTime值没有格式。是您的程序以“格式”显示日期时间值。但是,如果收到的字段是日期,为什么要将其存储在字符串中?使用DateTime变量代替数据库中没有格式的DateTime;这是一个数字。您是否将其存储为字符串?或者作为日期时间?还有:d1和d2到底是什么?它们是绳子吗?还是约会时间?再说一遍:接收列的定义类型到底是什么?更新了我的qyestion:d1和d2是字符串,接收是数据时间
DateTime d1 = ..., d2 = ...
new { d1 = [someparse(d1)], @d2 = [someparse(d2)], }