2015-10-13 21 views
1

我正在使用ColdFusion和SQL Server。我正在嘗試將Due_Date轉換爲MM/DD/YYYY。將日期時間轉換爲MM/DD/YYYY的CF/SQL

數據庫是這樣設置的,不幸的是我無法對其進行任何更改。 enter image description here

我正在像這樣的電話:

<cffunction name="displayTable" access="public" returntype="query"> 
    <cfquery name="processTable"> 
     SELECT id, Date_Due, Date_Complete, Item_Count 
     FROM dbo.Dealer_Track_Work  
    </cfquery> 
    <cfreturn processTable> 
</cffunction> 

我已經試過的一些類似的多種組合:

<cffunction name="displayTable" access="public" returntype="query"> 
    <cfquery name="processTable"> 
     SELECT id, LEFT(CONVERT(VARCHAR, Date_Due, 120), Date_Complete, Item_Count 
     FROM dbo.Dealer_Track_Work  
    </cfquery> 
    <cfreturn processTable> 
</cffunction> 

誰能那個地方我可能去錯了嗎?我在想因爲數據庫設置爲日期時間,這是轉換爲varchar,但我仍然不能拿出正確的組合。 (並且我不允許更改表)任何幫助讓我的輸出讀取MM/DD/YYYY將不勝感激。

回答

8

我會像下面那樣運行您的查詢。不要忘了無功範圍的processTable變量

<cffunction name="displayTable" access="public" returntype="query"> 
    <cfset var processTable = ''> 
    <cfquery name="processTable"> 
    SELECT id, Date_Due, Date_Complete, Item_Count 
    FROM dbo.Dealer_Track_Work  
    </cfquery> 
    <cfreturn processTable> 
</cffunction> 

,然後ColdFusion的側

#dateFormat(processTable.Date_Due, 'mm/dd/yyyy')# 
+0

你爲什麼要這樣做? Vicki

+0

確保該變量對於當前函數上下文是私有的,並且不會在該函數之外提供。 –

+2

@MattBusche從CF 9開始,你只需要做name =「local.processTable」來將變量的作用範圍保持爲函數的本地(Var作用域)。 –

3

執行格式化你不是應該使用101?

<cffunction name="displayTable" access="public" returntype="query"> 
    <cfquery name="processTable"> 
    SELECT id, CONVERT(CHAR(10), Date_Due, 101), Date_Complete, Item_Count 
    FROM dbo.Dealer_Track_Work  
    </cfquery> 
    <cfreturn processTable> 
</cffunction> 
+3

(編輯)是的,格式101也可以。有關格式的完整列表,請參閱[BOL中的CAST和CONVERT](https://msdn.microsoft.com/zh-cn/library/ms187928.aspx)。也就是說,通常最好將值保留爲儘可能長的日期時間對象,以防需要對對象執行任何日期數學運算。只在需要時纔在CF中進行格式化。另外,對於CF--不要忘記'var/local'作用域的查詢名稱以避免可能的線程問題。 – Leigh

+1

同意。讓數據庫進行數據處理;這是CF做「最後一英里」輸出格式的工作。 –

相關問題