CSV文件到Excel 2010格式化date时间字段

我有几个SQL Server中的date时间字段输出到CSV文件,无论是.txt或.csv。 在Excel 2010中自动打开.csv文件时,会将date时间格式设置为mm:ss.0,并完全删除date部分。

我读过这个: 在Excel中打开一个CSV文件改变我的格式和这个: 保证被Excel识别的date格式

以下是存储在CSV文件(.txt)中的原始文本的片段。 注意date部分是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 

当我去“格式化单元格…”并查看字段格式时,它是“Custom”和“mm:ss.0”。 我可以重新格式化为date格式,它工作正常,所以显然数据本身是正确的。 为什么Excel只格式化时间部分,为什么要放弃时间? 如果字段types是“常规”,Excel不应该能够parsingdate时间数据?

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

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

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

 <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文件中正确格式。