Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Datetime Coldfusion版本中返回的不同查询结果_Datetime_Coldfusion_Coldfusion 9_Coldfusion 10 - Fatal编程技术网

Datetime Coldfusion版本中返回的不同查询结果

Datetime Coldfusion版本中返回的不同查询结果,datetime,coldfusion,coldfusion-9,coldfusion-10,Datetime,Coldfusion,Coldfusion 9,Coldfusion 10,我们正在两个不同版本的ColdFusion(CF9和CF10)上运行一个cfquery。返回结果时,日期在不同版本中的格式不同 问题是 SELECT TOP 100 CONVERT(DATE,Field1,121),Field2 FROM A_TABLE 在CF9中,字段1的返回类似于2010-06-01 在Cf10中,字段1的返回看起来像{ts'2010-06-01 00:00:00'} 还有其他人注意到这种差异吗?我们已经搜索了CF文档,没有注意到任何关于此更改的内容。返回的数据是相同的。

我们正在两个不同版本的ColdFusion(CF9和CF10)上运行一个cfquery。返回结果时,日期在不同版本中的格式不同

问题是

SELECT TOP 100 CONVERT(DATE,Field1,121),Field2
FROM A_TABLE
在CF9中,字段1的返回类似于
2010-06-01

在Cf10中,字段1的返回看起来像
{ts'2010-06-01 00:00:00'}


还有其他人注意到这种差异吗?我们已经搜索了CF文档,没有注意到任何关于此更改的内容。

返回的数据是相同的。您在CF10中看到的是ColdFusion显示日期/时间对象的方式。(根据Miguel-F的反馈进行编辑)


无论何时输出日期/时间,您都可以(也应该)使用
dateFormat()
timeformat()
(以及在CF 10中
datetimeformat()
)以标准方式格式化日期/时间。

如果使用dateFormat函数,这一切都是一样的。您是如何查看此数据的?在CF9中,ColdFusion没有返回Microsoft文档中公布的格式。我正在通过cfdump查看此数据。但该格式也会传递到其他输出,包括SerializeJson。每当需要格式化的日期/时间时,请使用
dateFormat()
timeFormat()
和/或(在Cf 10中)
dateTimeFormat()
-请参见下面我的答案。您在CF10中看到的是ColdSuion从数据库中显示“原始”日期/时间的方式-我认为这不准确。不同之处在于,在CF10中,它似乎返回一个日期/时间对象,而在CF9中,它似乎只返回一个字符串表示形式。输出
{ts'2010-06-01 00:00:00'}
是ColdFusion显示日期/时间对象的方式。这可能是JDBC驱动程序中的差异。无论哪种方式,
dateFormat()
timeFormat()
和/或
dateTimeFormat()
都可以解决他遇到的任何显示问题。我编辑了答案,以考虑到您在@Miguel指出的问题-F@Miguel-F:CONVERT(DATE,…)在两个版本中都应该返回一个
java.sql.DATE
对象。这只是CF选择如何显示它的问题。CF9必须使用,这解释了为什么结果是“yyyy-mm-dd”。我的猜测是,CF10要么以不同的方式显示
java.sql.Date
,要么可能是查询返回了
时间戳
对象。您必须转储查询列类才能确定ie
#queryName.field1[1].getClass().name#
。噢,如果
serializeJSON
正在对日期时间列进行某种自动转换,您可能需要a)将值强制转换/转换为SQL中的字符串,或者b)将
varchar列
添加到查询对象,然后循环遍历它,并使用
dateFormat()
手动填充varchar列。