我正在尝试将NOW
插入MySQL表中。类似的东西:
<cfset datatime = CREATEODBCDATETIME( Now() ) />
<cfquery name="qInsert" datasource="#dbanme#" >
INSERT INTO TableName(....,date_created, date_modified)
VALUES(...,'#datatime#', '#datatime#')
</cfquery>
但是我收到以下错误:
无效的JDBC时间戳转义
任何帮助?
答案 0 :(得分:10)
让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>
答案 1 :(得分:7)
如果您想要没有时间的日期,请使用以下内容:
<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>
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>
答案 2 :(得分:3)
如果您想使用内置的NOW功能,只需将其作为查询的一部分包含在内:
<cfquery name="qInsert" datasource="#dbname#" >
INSERT INTO TableName(....,date_created, date_modified)
VALUES(...,NOW(), NOW())
</cfquery>
答案 3 :(得分:0)
插入SQL Server时,生成的ColdFusion时间戳不需要引号。
详细说明,如果您使用DateFormat和诸如此类的字符串构建时间戳,则必须使用以下格式插入:
INSERT INTO TABLE(DATE_COL) VALUES({ts '#dateInAStringFormat#'})
日期的ColdFusion ODBCx函数可以为您完成所有这些工作,所以它只是:
INSERT INTO TABLE(DATE_COL) VALUES( #dateInAStringFormat# )