1

我在 SQL Server 中有几个日期时间字段,它们以 .txt 或 .csv 格式输出到 CSV 文件中。在 Excel 2010 中自动打开 .csv 文件时,它将日期时间格式化为 mm:ss.0 并完全删除日期部分。

我已阅读此内容:Opening a CSV file in excel changes my formats and this: Date format that areGuaranteed to be recognized by Excel

这是存储在 CSV 文件 (.txt) 中的原始文本片段。请注意,日期部分是 ISO 格式。时间部分确实有毫秒。

"EVENTSTARTDATE","EVENTTITLE","PURCHASEDATE"
"2013-04-17 00:00:00.0","Test Event","2013-04-17 15:06:27.56"

这是Excel中的格式:

EVENTSTARTDATE  EVENTTITLE  PURCHASEDATE
00:00.0         Test Event  06:27.6

单击字段显示这些值:

EVENTSTARTDATE                      PURCHASEDATE
4/17/2013  12:00:00 AM              4/17/2013  3:06:28 PM

当我转到“格式化单元格...”并查看字段格式时,它是“自定义”和“mm:ss.0”。我可以将其重新格式化为 Date 格式并且它工作正常,所以显然数据本身是正确的。为什么 Excel 只格式化时间部分,为什么要去掉小时数?如果字段类型为“常规”,Excel 不应该能够解析日期时间数据吗?

其他可能相关的信息:我正在使用 ColdFusion 9 并且有使用 CreateODBCDateTime() 函数的代码。

<cfif isDate(raw)>
   <cfset raw = CreateODBCDateTime(raw)>
</cfif>
4

1 回答 1

1

解决了这个问题。该函数的代码中隐藏了一个函数调用:

<cffunction name="QueryToCSV" access="public" returntype="string" output="false" hint="Converts a query to a comma separated value string.">
        <cfargument name="Query" type="query" required="true" hint="the query being converted to CSV">
        <cfargument name="Headers" type="string" required="false" default="#arguments.query.columnList#" hint="the list of field headings to be used when creating the CSV value">
        <cfargument name="Fields" type="string" required="false" default="#arguments.query.columnList#" hint="the list of query fields to be used when creating the CSV value">
        <cfargument name="lstDateTimeFields" type="string" required="false" default="" hint="the list of fields that should be output in a date/time format">
        <cfargument name="CreateHeaderRow" type="boolean" required="false" default="true" hint="flags whether or not to create a row of header values">
        <cfargument name="Delimiter" type="string" required="false" default="," hint="the field delimiter in the CSV value">

        <!--- 
            Author:
            Ben Nadel 

            Link:
            http://www.bennadel.com/blog/1239-Updated-Converting-A-ColdFusion-Query-To-CSV-Using-QueryToCSV-.htm
        --->
...
</cffunction>

这就是它用来将查询转换为 CSV 的方法。使用正确的字段名称设置lstDateTimeFields参数会导致它们在 Excel 文件中正确格式化。

于 2013-05-15T00:57:06.703 回答