2013-10-18 138 views
1

假设我在我的SQL Server数据库中有以下日期格式:3/2007但是当我尝试通过CFML脚本获取数据时,我得到了这种更改格式2007-03-31 00:00:00.0,我的脚本看起来像这样:CFML SQL查询修改表格中的原始日期格式

<cfquery name="header" datasource="mydb"> 
SELECT 
    ExpDate 
FROM 
    myTable 
</cfquery> 

<CFOUTPUT>ExpDate</CFOUTPUT> 
<cfloop query="header"> 
<CFOUTPUT>#ExpDate#</cfoutput> 
</cfloop> 

任何想法为什么我的日期格式被改变?谢谢!

+0

* RE:我在我的SQL Server数据库中有以下日期格式:3/2007 *。列'datetime'或'varchar'?如前所述,'datetime'值不会以这种方式存储。 SQL Server实际上[在内部将日期时间值存储为数字](http://technet.microsoft.com/zh-cn/library/aa258277%28v=SQL.80%29.aspx)。 * RE:我得到这种改变的格式2007-03-31 00:00:00.0 *这是CF在将日期时间值显示为字符串时使用的默认格式。如果你想要一个不同的格式,使用'DateFormat(theDateTimeColumn,mask)'(正如你想象的那样)。注意:这里不需要'ParseDateTime'。这是多余的。 – Leigh

回答

1

日期不以任何格式存储在SQL Server中。客户端应用程序格式日期。

您可以按照以下方式修改您的查询,以得到需要格式的值为varchar的日期值。

SELECT 
    RIGHT(CONVERT(varchar(12),ExpDate,103),7) ExpDate 
FROM 
    myTable 
+0

那么现在我在试图输出时在脚本中出现这个错误:'变量EXPDATE未定义。' – bsteo

+0

@xtmtrx我忘记了指定字段的别名。请看,我刚刚编辑它的答案。 –

+0

哦,谢谢!无论如何,我发现CFML'#DateFormat(ParseDateTime(ExpDate),“mm/yyyy”)的另一种方式# – bsteo