You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用R向PostgreSQL表插入时间戳值时出现语法错误

解决R向PostgreSQL插入时间戳的语法错误问题

错误根源

你拼接出的SQL语句里,时间戳值没被单引号包裹。PostgreSQL会把2022-09-13当成算术运算(2022减9减13),后面的14:26:4就成了语法错误。对比你能正常运行的写法,带单引号的'2022-09-13 14:08:08'才是合法的时间戳字面量。

两种解决方式

方式1:给sprintf模板中的时间戳参数加单引号

修改SQL模板,在时间戳对应的%s前后补上单引号,确保生成的SQL符合语法:

datecolumn <- format(Sys.time())
qry = sprintf("insert into table(column1, datecolumn) values(%s, '%s');", 123234, datecolumn)
rs <- dbSendQuery(con, qry)
print(rs)

方式2:用参数化查询(更安全,推荐)

直接拼接字符串有SQL注入风险,用DBI的参数化查询可以让驱动自动处理参数格式,不用手动加单引号:

datecolumn <- Sys.time()  # 无需format,直接传原生POSIXct时间类型
qry <- "insert into table(column1, datecolumn) values($1, $2);"
rs <- dbSendQuery(con, qry, params = list(123234, datecolumn))
print(rs)

内容的提问来源于stack exchange,提问作者user3280899

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 20:30:33