使用Dapper和Npgsql插入Postgres日期范围

时间:2016-12-20 19:32:44

标签: postgresql dapper npgsql date-range

我正在尝试使用Dapper将日期范围插入到Postgres数据库中,使用以下代码:

string INSERT_DATE_RANGE = @"INSERT INTO datetable (daterange) VALUES('[@dateRangeStart, @dateRangeBegin]')";

.... (standard connection stuff)

var startDate = DateTime.Now;
var endDate = DateTime.MaxValue;

connection.Execute(INSERT_DATE_RANGE, new { @dateRangeStart = startDate, @dateRangeBegin = endDate });

这给了我以下错误:

  

22007:类型日期的输入语法无效:“@ dateRangeStart”

我怀疑这是因为我试图替换的参数在单引号内。但是,如果我删除了引号,则会收到不同的错误消息:

  

42601:“[”

处或附近的语法错误

有什么建议吗?我可以只连接字符串,但我宁愿不使用该方法,因为它打开了可能的SQL注入。

1 个答案:

答案 0 :(得分:3)

constructor function用于daterange类型,即:

INSERT INTO datetable (daterange) VALUES (daterange(@dateRangeStart, @dateRangeBegin, '[]'))