我正在移動一些數據,我需要拿出一個TSQL語句來將日期時間字段中的日期轉換爲另一個使用varchar MM/yy格式的數據庫字段。在TSQL中的轉換日期
該聲明需要同時適用於SQL Server 2k5 和 SQL精簡版3.5 - 因此,答案需要基於「set」設置,不包括SQLCE中不支持的遊標等。
我正在移動一些數據,我需要拿出一個TSQL語句來將日期時間字段中的日期轉換爲另一個使用varchar MM/yy格式的數據庫字段。在TSQL中的轉換日期
該聲明需要同時適用於SQL Server 2k5 和 SQL精簡版3.5 - 因此,答案需要基於「set」設置,不包括SQLCE中不支持的遊標等。
如果您曾在非美國數據庫服務器上運行,依賴該類型(即「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)
查看DATEPART()函數的聯機叢書文檔。
不正是你想要的,但你應該能夠很容易地改變:
DECLARE @ddate datetime
set @ddate = getdate()
SELECT CAST(DATEPART(month, @ddate) as varchar(2)) + '/' + CAST(DATEPART(year, @ddate) as varchar(4))
http://msdn.microsoft.com/en-us/library/ms187928.aspx
轉換爲3型和修剪最後三個字符。
如何這樣的事情...
select substring(convert(varchar(8),yourdatefield,3),4,5) as newdate
from yourtable
因此,例如,
select substring(convert(varchar(8),getdate(),3),4,5)
給 「02/09」。
這是爲我們的情況提供最佳答案 - 因爲服務器語言環境可能有所不同事後看來,我應該在問題中包括這一點。感謝大家的時間和迴應。 – gleng 2009-02-24 01:00:34