Sql ColdFusion:将一个变量中的日期时间插入数据库Oracle10

Sql ColdFusion:将一个变量中的日期时间插入数据库Oracle10,sql,datetime,variables,coldfusion,oracle10g,Sql,Datetime,Variables,Coldfusion,Oracle10g,这个问题我已经解决了一个小时了。我正在使用ColdFusion语言。在我的代码中,我想在Oracle数据库中插入datetime。日期时间格式如下所示: <cfset form.date_print = #dateFormat(Now(),"yyyy-mm-dd") & " " & timeFormat(now(), "HH:mm:ss")#> <cfset qAdd = APPLICATION.qbs.insertData(column:'date_prin

这个问题我已经解决了一个小时了。我正在使用ColdFusion语言。在我的代码中,我想在Oracle数据库中插入datetime。日期时间格式如下所示:

<cfset form.date_print = #dateFormat(Now(),"yyyy-mm-dd") & " " & timeFormat(now(), "HH:mm:ss")#>
<cfset qAdd = APPLICATION.qbs.insertData(column:'date_print,usr_id_print,qsd_id,loc_id',formData:'#FORM#',table:"qpl_print_log")>
<cfqueryparam cfsqltype="CF_SQL_TIMESTAMP" value="#convertDate(trim(listGetAt(value, item,';')))#">
在我的表格中,属性日期打印仅显示日期格式

但是在ColdFusion中,我发送格式日期和时间如下
2016-05-16 14:12:35

但是如果我想看到我的时间格式,我需要点击铅笔图标

希望有人能帮我解决这个问题


谢谢

您正在将
cfsqltype作为cf\u sql\u日期传递
。您需要将
CF\u SQL\u TIMESTAMP
作为您的cfsqltype传递

您的cfqueryparam应如下所示:

<cfset form.date_print = #dateFormat(Now(),"yyyy-mm-dd") & " " & timeFormat(now(), "HH:mm:ss")#>
<cfset qAdd = APPLICATION.qbs.insertData(column:'date_print,usr_id_print,qsd_id,loc_id',formData:'#FORM#',table:"qpl_print_log")>
<cfqueryparam cfsqltype="CF_SQL_TIMESTAMP" value="#convertDate(trim(listGetAt(value, item,';')))#">


cf\u sql\u date将日期时间截断为仅一个日期值(实际上计算为一个数值),其中as cf\u sql\u timestamp使用完整的日期时间戳。

您正在将
cfsqltype作为cf\u sql\u date传递。
。您需要将
CF\u SQL\u TIMESTAMP
作为您的cfsqltype传递

您的cfqueryparam应如下所示:

<cfset form.date_print = #dateFormat(Now(),"yyyy-mm-dd") & " " & timeFormat(now(), "HH:mm:ss")#>
<cfset qAdd = APPLICATION.qbs.insertData(column:'date_print,usr_id_print,qsd_id,loc_id',formData:'#FORM#',table:"qpl_print_log")>
<cfqueryparam cfsqltype="CF_SQL_TIMESTAMP" value="#convertDate(trim(listGetAt(value, item,';')))#">


cf\u sql\u date将日期时间截断为一个日期值(实际上计算为一个数字值),而cf\u sql\u timestamp使用了一个完整的日期时间戳。

这里发生了一些事情

Oracle存储具有世纪、年、月、日、小时、分钟和秒值的日期数据类型。与MS SQL的epoch存储有所不同,但您仍然可以访问日期数据类型中的时间值。如果您需要更高的精度,TIMESTAMP数据类型可以为您提供小数点后的5或6位数字(因此需要很多毫秒)

对于存储日期时间,Tushar是正确的。您应该使用CF\u SQL\u时间戳,而不仅仅是CF\u SQL\u日期。对于Oracle,时间戳值将为您提供所需的小时:分钟:秒精度。Oracle对数据类型非常敏感(而MS SQL有时会更宽容),我相信CF_SQL_日期(在MSSQL中可以工作)会作为一个整数返回,时间部分会被截断(给您0小时、0分钟和0秒),CF_SQL_时间戳是Oracle(以及其他数据库,如SQL Server)使用的实际时间戳对象可以更好的理解。所以使用时间戳而不是日期

截断就是在单击编辑值时看到0:0:0的原因

查询工具本身就是您看到日期格式的原因。 我不确定您使用的是哪一种,但要更改SQL Developer中的显示,请转到工具>>首选项>>单击NLS>使用要使用的掩码编辑日期格式(YYYY-MM-DD HH24:MI:SS)。这将以所需的日期格式显示查询。蟾蜍或其他动物应该有类似的东西

页面的一半是一个图表,其中包含适用的CF到数据类型比较。

使用日期屏蔽时要小心。不同的系统做不同的事情,“y”可以不同于“y”,即使在ColdFusion中也是如此


另外,在常规代码检查中注意:请验证您的输入(尤其是表名),并在queryparam中使用maxlength参数。insertData()看起来非常可注入。此外,如果这是CF>9,则不要使用var local。本地作用域现在内置到ColdFusion中。它不应该破坏任何东西,但您并没有真正做到代码认为它在做的事情

这里发生了几件事

Oracle存储具有世纪、年、月、日、小时、分钟和秒值的日期数据类型。与MS SQL的epoch存储有所不同,但您仍然可以访问日期数据类型中的时间值。如果您需要更高的精度,TIMESTAMP数据类型可以为您提供小数点后的5或6位数字(因此需要很多毫秒)

对于存储日期时间,Tushar是正确的。您应该使用CF\u SQL\u时间戳,而不仅仅是CF\u SQL\u日期。对于Oracle,时间戳值将为您提供所需的小时:分钟:秒精度。Oracle对数据类型非常敏感(而MS SQL有时会更宽容),我相信CF_SQL_日期(在MSSQL中可以工作)会作为一个整数返回,时间部分会被截断(给您0小时、0分钟和0秒),CF_SQL_时间戳是Oracle(以及其他数据库,如SQL Server)使用的实际时间戳对象可以更好的理解。所以使用时间戳而不是日期

截断就是在单击编辑值时看到0:0:0的原因

查询工具本身就是您看到日期格式的原因。 我不确定您使用的是哪一种,但要更改SQL Developer中的显示,请转到工具>>首选项>>单击NLS>使用要使用的掩码编辑日期格式(YYYY-MM-DD HH24:MI:SS)。这将以所需的日期格式显示查询。蟾蜍或其他动物应该有类似的东西

页面的一半是一个图表,其中包含适用的CF到数据类型比较。

使用日期屏蔽时要小心。不同的系统做不同的事情,“y”可以不同于“y”,即使在ColdFusion中也是如此


另外,在常规代码检查中注意:请验证您的输入(尤其是表名),并在queryparam中使用maxlength参数。insertData()看起来非常可注入。此外,如果这是CF>9,则不要使用var local。本地作用域现在内置到ColdFusion中。它不应该破坏任何东西,但您并没有真正做到代码认为它在做的事情

我对oracle没有任何经验,但oracle似乎以DD-MM-YY格式存储数据。请看一下文档基本上我不认为ColdFusion不能读取日期和时间格式。我认为它在执行数据库时出错。我真的不知道如何解决这个问题。有人知道吗?CF可以读取日期和时间,但您提到,您在将数据插入数据库时遇到问题,因此可能无法读取数据。第二件事是您没有发布正在插入数据的查询。@Keshavjha I已经发布了