Coldfusion CF proc结果中的时间格式值无效

Coldfusion CF proc结果中的时间格式值无效,coldfusion,coldfusion-2016,Coldfusion,Coldfusion 2016,我正在从CF 9升级到CF 2016的过程中,在StoredProc调用(cfscript)返回的数据中看到一些奇怪的行为 数据库中的数据类型为time(7)。我发现问题所在的数据库值是:00:00:00.0000000 我直接在execute().getproclesultsets().results行之后转储结果 在CF 9中,cfdump中的值为00:00:00.0000000,这是正确的 在CF 2016中,cfdump中的值为1970-01-01 00:00:00.0 此差异导致我

我正在从CF 9升级到CF 2016的过程中,在StoredProc调用(cfscript)返回的数据中看到一些奇怪的行为

数据库中的数据类型为
time(7)
。我发现问题所在的数据库值是:
00:00:00.0000000

我直接在
execute().getproclesultsets().results
行之后转储结果

  • 在CF 9中,cfdump中的值为
    00:00:00.0000000
    ,这是正确的

  • 在CF 2016中,cfdump中的值为
    1970-01-01 00:00:00.0

此差异导致我的代码中出现“无效日期时间错误”:

CreateODBCDateTime("#end_date# #end_time#")
我通过使用
TimeFormat()
函数调用修复了此问题,但我想知道是否有其他选项可以修复此问题,以便CF的StoredProc返回的数据是正确的,以消除任何可能的混淆


更新:我正在使用Adobe提供的默认驱动程序。

啊,是的,不断流行的软件升级解决了我的代码问题。这种事总是发生在我身上。无论如何,cf2016给您的是一个更恰当的时间(7)数据类型的表示。@DanBracuk感谢您的回复,但我不同意。直接在SQL Server 2014中运行存储过程会得到00:00:00.0000000值,而CF(在驱动程序中)可能会对其进行变异。我希望CF从StoredProc()返回数据,这与直接调用proc时(即从SQL Server Management Studio)返回数据的方式完全相同。诚然,SSMS也可以对其进行格式化,但从我的理解来看,时间(7)应该是小时:分钟:秒,毫秒精度在本例中为7。请记住,SSMS是一种客户端软件,以可读的方式显示数据。仅仅因为你看不到日期部分并不意味着它不在那里。就像Dan说的,不要在以客户为中心的输出中投入太多,但是。。。似乎是由于司机的不同。在CF9.0.2中,默认驱动程序以字符串形式返回“time”。在CF 2016中,它返回一个java.sql.Timestamp,这可能更合适。。但对大多数日期函数来说都没有什么区别<代码>“这导致我的代码中出现无效的日期时间错误”什么代码抛出错误?确切的错误是什么?这就是为什么我不喜欢在SQL中同时使用日期和时间数据类型的原因之一。如果你不需要把它们分开,我就不会那样储存它们。
datetime2
类型可以工作。另外,你是否需要在约会中达到这样的精确程度?在科学测量之外,7分之一秒是非常小的,也不是很有用。