数据截断:日期时间值不正确 - 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 将假定的)并注意区域设置的差异。 (ddmmyyyy
和 mmddyyyy
是 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。
我正在处理事件的提交表单,一旦完成,就会转到处理页面并更新数据库。
我有 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 将假定的)并注意区域设置的差异。 (ddmmyyyy
和 mmddyyyy
是 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。