2014-02-05 98 views
-2

這是在SQL SERVER 2012環境中我有以下問題,我有一個表類型爲datetime的字段。在SQL Server中轉換

這個字段是像yyyy-mm-dd hh:mm:ss:msmsms - 「2013年12月12日00:00:00.000」

,我需要提取yyyy一個領域。另一個爲mm,最後一個爲dd

我試圖做到這一點

SELECT  distinct CONVERT(CHAR (10), Data, 120) as Dia, 
CONVERT(CHAR (7), Data, 120) as Mes, 
CONVERT(CHAR (4), Data, 120) as Ano 
FROM   Vendas 

但輸出我得到的是

Day 12-12-2013 
Month 12-2013 
Year 2013 

年是正確的,但我不能找到一個辦法只有削減日右半部分和月。

有人可以幫助我嗎?

+1

是你的目標字段的數字或字符? –

回答

5
SELECT YEAR(Data), MONTH(Data), DAY(Data) FROM dbo.Vendas; 

SELECT DATEPART(YEAR, Data), DATEPART(MONTH, Data), DATEPART(DAY, Data) 
    FROM dbo.Vendas; 

SQLFiddle

+0

這不行,我試過了。 –

+4

@Emanuel那麼,你需要提供更多的信息,然後。你可以從「不工作」的意思開始。 –

+1

@EmanuelBicho我剛剛得到了以下結果:'SELECT YEAR(GetDate()),MONTH(GetDate()),DAY(GetDate())'。這看起來很像Aaron所建議的。 – BrettFromLA

0

可以使用YEARMONTHDAY功能,從您的datetime列像這樣提取所需的零件...

DECLARE @DateColumn DATETIME = GETDATE(); 

SELECT YEAR(@DateColumn) AS [Year] 
     ,MONTH(@DateColumn) AS [Month] 
     ,DAY(@DateColumn) AS [Day] 

結果集

╔══════╦═══════╦═════╗ 
║ Year ║ Month ║ Day ║ 
╠══════╬═══════╬═════╣ 
║ 2014 ║  2 ║ 5 ║ 
╚══════╩═══════╩═════╝ 

查詢您的表

SELECT YEAR(Data) AS [Year] 
     ,MONTH(Data) AS [Month] 
     ,DAY(Data) AS [Day] 
FROM Vendas 
+0

那也不行,我在Microsfot Visual Studio中,製作一個ETL解決方案,我需要提取數據,就像你在我的文章中看到的一樣,但是我遇到的問題是轉換,只是得到它開始讀取的位置,並閱讀,直到字段的末尾 –

+0

這個作品,非常感謝你和所有試圖幫助我的人。謝謝 –

+1

沒有問題@EmanuelBicho如果它幫助你,你可以接受它作爲答案:) –

0

試試這個:

SELECT GETDATE() 'Today', CONVERT(varchar(2), getdate(), 101) --Month Part 
SELECT GETDATE() 'Today', CONVERT(varchar(4), getdate(), 102) --Year Part 
SELECT GETDATE() 'Today', CONVERT(varchar(2), getdate(), 103) --Day Part 

SELECT GETDATE() 'Today', MONTH(GETDATE()) --Month Part 
SELECT GETDATE() 'Today', year(GETDATE()) --Year Part 
SELECT GETDATE() 'Today', day(GETDATE()) --Day Part 

SELECT GETDATE() 'Today', RIGHT('0'+CAST(MONTH(GETDATE()) AS varchar(2)),2) --Month Part 
SELECT GETDATE() 'Today', RIGHT('0'+CAST(year(GETDATE()) AS varchar(4)),4) --Year Part 
SELECT GETDATE() 'Today', RIGHT('0'+CAST(DAY(GETDATE()) AS varchar(2)), 2) --Day Part 

SELECT month('2014-12-23') --Month Part 
SELECT year('2014-12-23') --Year Part 
SELECT day('2014-12-23') --Day Part