我正在处理已完成的事件的提交表单,转到处理页面并更新数据库。
我有14个领域,其中有几个领域是活动的日期和时间。
在处理表单期间,我在尝试插入数据库之前加入两个表单条目,日期和时间,但发生错误。
数据截断:日期时间值不正确
以下是失败的代码元素:
<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:mm:ss格式。
干杯。
答案 0 :(得分:1)
ColdFusion可以使用cfSqlType="CF_SQL_TIMESTAMP"
处理几种日期时间格式的字符串表示,如前所述。根本不需要为查询创建日期(时间)对象。只需确保isDate(yourDateTimeString)
为字符串返回true(因为这是CF_SQL_TIMESTAMP将假设的)并且要注意区域设置的差异。 (ddmmyyyy
和mmddyyyy
是两种令人讨厌的格式,会被ColdFusion混淆,我保证。)
答案 1 :(得分:1)
在这里追逐。将您的代码更改为:
<!--- 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')>
查看是否为您插入。大多数DB采用字符串并在内部隐式转换为dattime。