2009-02-23 37 views
2

我正在移動一些數據,我需要拿出一個TSQL語句來將日期時間字段中的日期轉換爲另一個使用varchar MM/yy格式的數據庫字段。在TSQL中的轉換日期

該聲明需要同時適用於SQL Server 2k5 SQL精簡版3.5 - 因此,答案需要基於「set」設置,不包括SQLCE中不支持的遊標等。

回答

2

如果您曾在非美國數據庫服務器上運行,依賴該類型(即「101」)可能會非常危險,因爲mm和dd會被切換。可能與使用「3」類型相同。只要你知道服務器的語言總是相同的,那麼這些方法是最簡單的。

使用日期部分可能是更可靠的,但是如果你想要說的03/08,而不是3/08,你必須確保在一個月一個「0」字頭,所以

select 
    right('00' + convert(varchar(2), datepart(mm, @ddate)), 2) + '/' + 
    right(convert(varchar(4), datepart(yy, @ddate)), 2) 
+0

這是爲我們的情況提供最佳答案 - 因爲服務器語言環境可能有所不同事後看來,我應該在問題中包括這一點。感謝大家的時間和迴應。 – gleng 2009-02-24 01:00:34

0

查看DATEPART()函數的聯機叢書文檔。

1

不正是你想要的,但你應該能夠很容易地改變:

DECLARE @ddate datetime 

set @ddate = getdate() 

SELECT CAST(DATEPART(month, @ddate) as varchar(2)) + '/' + CAST(DATEPART(year, @ddate) as varchar(4)) 
1

如何這樣的事情...

select substring(convert(varchar(8),yourdatefield,3),4,5) as newdate 
from yourtable 

因此,例如,

select substring(convert(varchar(8),getdate(),3),4,5) 

給 「02/09」。