CSV文件到Excel 2010将日期时间字段格式化为时间

时间:2013-05-14 20:04:04

标签: excel ms-access datetime csv coldfusion-9

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

我已阅读此内容:Opening a CSV file in excel changes my formats和此:Date format that is guaranteed 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”。我可以将其重新格式化为日期格式,它工作正常,所以显然数据本身是正确的。为什么Excel只格式化时间部分,为什么要删除小时?如果字段类型为“常规”,Excel不能解析日期时间数据吗?

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

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

1 个答案:

答案 0 :(得分: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文件中正确格式化。