从Coldfusion在MSSQL中插入日期时间

时间:2013-03-05 16:29:49

标签: sql coldfusion

我正在尝试将NOW插入MySQL表中。类似的东西:

<cfset datatime = CREATEODBCDATETIME( Now() ) />

<cfquery name="qInsert" datasource="#dbanme#" >
   INSERT INTO TableName(....,date_created, date_modified)
   VALUES(...,'#datatime#', '#datatime#')
</cfquery>

但是我收到以下错误:

  

无效的JDBC时间戳转义

任何帮助?

4 个答案:

答案 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# )