我试图插入NOWMySQL表.就像是:
<cfset datatime = CREATEODBCDATETIME( Now() ) />
<cfquery name="qInsert" datasource="#dbanme#" >
INSERT INTO TableName(....,date_created, date_modified)
VALUES(...,'#datatime#', '#datatime#')
</cfquery>
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误:
无效的JDBC时间戳转义
有帮助吗?
Joe*_*e C 12
让ColdFusion为您写出数据 - 使用cfqueryparam.这里并不是绝对必要的,但最好尽可能使用它.除了保护您免受SQL注入之外,它还会适当地格式化您的变量,因此您不必担心是否需要将值插入字符串或整数或其他任何内容.
<cfset datatime = CREATEODBCDATETIME( Now() ) />
<cfquery name="qInsert" datasource="#dbanme#" >
INSERT INTO TableName(....,date_created, date_modified)
VALUES(...,
<cfqueryparam value="#datatime#" cfsqltype="cf_sql_timestamp">,
<cfqueryparam value="#datatime#" cfsqltype="cf_sql_timestamp">
)
</cfquery>
Run Code Online (Sandbox Code Playgroud)
如果您想要没有时间的日期,请使用以下内容:
<cfquery name="qInsert" datasource="#dbanme#" >
INSERT INTO TableName( ...., date_created, date_modified )
VALUES ( ...
, <cfqueryparam cfsqltype="cf_sql_date" value="#now()#">
, <cfqueryparam cfsqltype="cf_sql_date" value="#now()#">
)
</cfquery>
Run Code Online (Sandbox Code Playgroud)
cf_sql_date将删除任何时间,并根据您的字段类型显示仅日期或日期00:00:00作为时间值.
如果你想要一个有时间的日期:
<cfquery name="qInsert" datasource="#dbanme#" >
INSERT INTO TableName ( ....,date_created, date_modified )
VALUES ( ...
, <cfqueryparam cfsqltype="cf_sql_timestamp" value="#now()#">
, <cfqueryparam cfsqltype="cf_sql_timestamp" value="#now()#">
)
</cfquery>
Run Code Online (Sandbox Code Playgroud)
插入 SQL Server 时,不需要在生成的 ColdFusion 时间戳周围加引号。
详细地说,如果您使用 DateFormat 等将时间戳构建为字符串,则必须使用以下格式插入:
INSERT INTO TABLE(DATE_COL) VALUES({ts '#dateInAStringFormat#'})
Run Code Online (Sandbox Code Playgroud)
ColdFusion ODBCx 日期函数可以为您完成所有这些工作,所以它只是:
INSERT INTO TABLE(DATE_COL) VALUES( #dateInAStringFormat# )
Run Code Online (Sandbox Code Playgroud)