数据截断:日期时间值不正确 - coldfusion

Data truncation: Incorrect datetime value - coldfusion

我正在处理事件的提交表单,一旦完成,就会转到处理页面并更新数据库。

我有 14 个字段,其中有几个是必需的,其中之一是事件的日期和时间。

在处理表单的过程中,我加入了两个表单条目,日期和时间,然后尝试插入数据库,但出现错误。

Data truncation: Incorrect datetime value

这是失败的代码元素:

<cfset insdate = form["date"] & form["time"]>
<cfset new_date = #CREATEODBCDATETIME(insdate)#>

<cfif len(trim("#institle#"))>
        <cfquery name="modify">
            INSERT INTO table
            SET
            title = <cfqueryparam                      
                     cfsqltype="CF_SQL_LONGVARCHAR" 
                     value="#institle#">,
            dateTime = <cfqueryparam 
                     cfsqltype="CF_SQL_LONGVARCHAR" 
                     value="#new_date#">,
            location = <cfqueryparam 
                     cfsqltype="CF_SQL_LONGVARCHAR" 
                     value="#inslocation#">,
            category = <cfqueryparam 
                     cfsqltype="CF_SQL_SMALLINT" 
                     value="#inscategory#">,
            type = <cfqueryparam 
                     cfsqltype="CF_SQL_TINYINT" 
                     value="#instype#">                                   
         </cfquery>
</cfif>

我已经精简了上面的代码,使其更短更易于阅读。如果有人知道我做错了什么,那就太好了。

我是 运行 Coldfusion 8,一个 mySQL 数据库,该数据库接受相关字段的日期时间,格式为 yyyy-mm-dd hh:mm:ss。

干杯。

ColdFusion 可以使用 cfSqlType="CF_SQL_TIMESTAMP" 处理多种日期时间格式的字符串表示,正如已经建议的那样。根本不需要为查询创建日期(时间)对象。只需确保字符串的 isDate(yourDateTimeString) returns 为真(因为那是 CF_SQL_TIMESTAMP 将假定的)并注意区域设置的差异。 (ddmmyyyymmddyyyy 是 ColdFusion 会混淆的两种令人讨厌的格式,我保证。)

切入正题。将您的代码更改为:

<!--- create a date object --->
<cfset new_date = CREATEODBCDATETIME(insdate)>
<!--- format for the DB --->
<cfset new_date = dateformat (new_date, 'yyyy-mm-dd') & ' ' & timeformat(new_date,'HH:mm:ss')>

看看是否适合您。大多数数据库接受一个字符串并在内部隐式转换为 dattime。