2014-05-13 46 views
0

我有許多帶日期字段的表格,例如[到期日期],[過期日期]等。
日期格式爲2014-08-06。SQL:轉換日期列中的數據

我有標籤軟件直接從數據庫中讀取數據。例如,它將拉出一條記錄並打印出'Use by:'[過期日期]。

按照適當的文檔標準,這個截止日期,以及所有其他日期字段,應在以下格式來代替:

2014年8月6日

是實現這一目標創造一個複製的唯一合理途徑字段對於每個日期字段每個表並運行查詢將數據複製並轉換爲新的varchar字段?

+0

你能指出這個sw在存儲過程嗎?或一個視圖? –

+2

什麼軟件正在讀取數據?爲什麼它不能像格式化輸出日期那樣簡單?爲什麼不能用它來定製檢索數據的查詢?你總是可以創建一個'VIEW'並指向它...我猜VIEW應該返回已經格式化的字符串而不是日期。 –

+0

'日期'本身沒有任何表示。 –

回答

0

當選擇從SQL本身的日期,你可以將日期時間字段具有特定格式使用CONVERT函數轉換:

SELECT CONVERT(VARCHAR, GETDATE(), 106) 

的106是轉換爲長日期格式的代碼。所以今天,這給了我:

13 May 2014 

要使用它,只需將其納入你的SELECT語句和可能使用AS提供了一個別名:

SELECT 
ID, 
CONVERT(VARCHAR, [Due Date], 106) as 'DueDate' 
FROM [myTableName] 
+0

您確定這適用於ms-access嗎? –

+0

@DanBracuk不知道。這個問題也標記爲tsql,它肯定會在那裏工作 –

0

最好的是,如上面所述,以你的軟件格式有日期

如果這是不可能的,寫入訪問是可以協商的,您可能想要替換您使用的表格

Create view v_SelectVisits 
AS 
select 
    ID 
    , DateTimeIn as DateTimeIn_old 
    , CONVERT(VARCHAR, DateTimeIn, 106) as DateTimeIn 
from visit 
GO 
select * from v_SelectVisits 

如果意見不爲你工作,你可以在計算列添加到您的表格爲您的所有日期(你肯定不能把選項#1?

Alter Table MyTable 
Add DateTimeIn_C as CONVERT(VARCHAR, DateTimeIn, 106) 
+0

爲什麼添加一個計算列,你可以直接轉換選擇輸出,按照我的例子? –

+0

如果他無法更改提取數據的SQL,但只能「附加到表」,那麼他可能不得不採取這一措施。這聽起來像他很少或根本不能控制消費數據的程序。我喜歡你的建議,並且在改變表格之前絕對會這樣做。但是,正如我所知,我們都同意,如果可能的話,有GUI格式的日期! – RosSQL

+0

夠公平的。沒有足夠的背景來評估什麼是最好的選擇。但改變表格確實應該是最後的手段 - 如果他能做到這一點,我相信他也有權建立視圖或更改選擇語句。 –