C# 如何在postgresSQL的dapper参数中传递日期时间格式?

C# 如何在postgresSQL的dapper参数中传递日期时间格式?,c#,postgresql,dapper,C#,Postgresql,Dapper,对于PostgreSQL中的表查询,我能够正确地获取数据 var query = "Select Id,name from employee where joiningTime BETWEEN '{startDateTime:yyyy-MM-dd HH:mm:ss}' AND '{endDateTime:yyyy-MM-dd HH:mm:ss}'" 数据返回正确,但由于这种方法易于SQL注入,我想将其改为参数化方法 var query = "Select Id,name from employ

对于PostgreSQL中的表查询,我能够正确地获取数据

var query = "Select Id,name from employee
where
joiningTime BETWEEN '{startDateTime:yyyy-MM-dd HH:mm:ss}' AND '{endDateTime:yyyy-MM-dd HH:mm:ss}'"
数据返回正确,但由于这种方法易于SQL注入,我想将其改为参数化方法

var query = "Select Id,name from employee
    where
    joiningTime BETWEEN '@startDateTime' AND '@endDateTime'"


var result = dbConnection.Query<Result>(query, new {startDateTime, endDateTime }); 
var query=“从员工中选择Id、姓名
哪里
“@startDateTime”和“@endDateTime”之间的连接时间
var result=dbConnection.Query(Query,new{startDateTime,endDateTime});

如何通过参数传递格式?

DateTime
s没有格式,它们就像数字(例如,like 1000可以格式化为1000.0或1x10^3等,但仍然只有1000)

您只需编写如下查询:

SELECT * FROM t WHERE dateCol BETWEEN @fromDate AND @toDate
注意:您不会在参数名称周围放置

在dapper调用中,输入datetime类型的参数:

DateTime x = DateTime.Now.AddDays(-1);
DateTime y = DateTime.Now;
dbConnection.Query<Result>(query, new { fromDate = x, toDate = y});
DateTime x=DateTime.Now.AddDays(-1);
DateTime y=DateTime.Now;
Query(Query,new{fromDate=x,toDate=y});
如果在数据库中,您已经将datetime列设置为varchar,并用字符串填充它们,这是您应该首先解决的问题(使它们成为正确的日期类型)

但即使你这样做了,建议也不会改变:

DateTime x = DateTime.Now.AddDays(-1);
DateTime y = DateTime.Now;
dbConnection.Query<Result>(
  "SELECT * FROM t WHERE dateCol BETWEEN @fromDate AND @toDate", 
  new { 
      fromDate = x.ToString("yyyy-MM-dd HH:mm:ss"), 
      toDate = y.ToString("yyyy-MM-dd HH:mm:ss")
  }
);
DateTime x=DateTime.Now.AddDays(-1);
DateTime y=DateTime.Now;
dbConnection.Query(
“选择*FROM t,其中dateCol介于@fromDate和@toDate之间”,
新{
fromDate=x.ToString(“yyyy-MM-dd HH:MM:ss”),
toDate=y.ToString(“yyyy-MM-dd HH:MM:ss”)
}
);
您仍然在将参数写入SQL,现在正在将格式化字符串放入参数值中,以匹配DB表中的格式化字符串。如果您的表包含日期/时间/时间戳类型的列,请不要这样做-这仅适用于您安排了将日期存储为字符串的可疑(愚蠢)情况,并且不愿意更改它(您应该这样做)