【发布时间】:2013-09-04 19:26:05
【问题描述】:
我在本地运行 ColdFusion 10,但最近从 Oracle 转换为 MSSQL 的数据库遇到了两个问题。
我要做的是使用 cfspreadsheet 将数据库中的数据输出到电子表格中。表中有 3 列,其中包含日期/时间戳。
问题 #1:代码在转换之前运行良好,但在转换之后,所有日期/时间戳都以科学记数法格式显示。我尝试使用强制转换修改我的 CFQUERY,但这只是将日期/时间戳字段显示为“YYYY/MM/DD”,而不是我的预期格式“MM/DD/YYYY HH:MM AM/PM” 。当我双击 excel 中的单元格时,我看到了正确的格式,但默认情况下它显示为“YYYY/MM/DD”。这里有什么建议吗?
问题 #2:如果应该使用我指定的日期/时间格式的列或特定单元格为空或 null,我会收到一个 '' is an invalid date or time string 错误。
这是我在 cfquery 中用于 CAST/CONVERT 的内容:
,CAST(CONVERT(varchar(20), GYMSTARTDATE, 22) AS datetime) AS GymStartDateTime
,CAST(CONVERT(varchar(20), GYMENDDATE, 22) AS datetime) AS GymEndDateTime
【问题讨论】:
-
1) 我不是在讽刺,但是……如果它“运行良好”,你想改变什么? :) 2) 一些电子表格功能是.. 古怪的。如果您将一个小型的、独立的复制案例放在一起来演示该问题,这将有所帮助,这样我们就可以独立测试它。对 sql 部分使用 sqlfiddle.com。 3) 如果您遇到错误,请包含 full 错误消息。从这句话很难判断你是遇到 SQL 错误还是 CF 错误。
-
“在转换之前工作正常”是指当它是 Oracle 时,ColdFusion 输出正确显示的电子表格文件上的日期字段。也就是说,Oracle 到 MSSQL 的转换完成后,所有的日期字段都以科学计数形式出现。因此,我在 CFQUERY 中添加了“CAST(CONVERT.....”),它所做的唯一一件事就是将 Excel 文件中的科学记数法格式更改为 YYYY/MM/DD 格式。
标签: excel sql-server-2008 datetime coldfusion cfspreadsheet