2012-08-28 33 views
2

我一直在尋找針對「類似」問題的複雜解決方案,但我認爲需要的東西要簡單得多。如何使用SELECT語句將SQL中的日期轉換爲文本?

我有一張桌子上有「獲獎者」。姓名,地址等......最重要的是他們贏得的日期。然後我想在網站上顯示這個。

SELECT FirstName, LastName, Prize, Winning_Date FROM Prize_Table 
ORDER BY Winning_Date DESC 

現在Winning_Date列是數據類型date

所以這是我的問題。

如果日期是2012-01-01,我希望能夠正常顯示月份和年份...。

例如爲:

January, 2012 

這也將是不錯的能夠只是縮寫月(月)和年放置在兩個不同的地方跨距標籤內。有點像你看到的那些小日曆圖標,月,年......和/或日期等

JAN 

2012 

我想確保我保留按日期訂購以及能力...一個月,一年都不錯。

謝謝你的幫助。

回答

2

你可以這樣說:

SELECT FirstName, 
     LastName, 
     Prize, 
     datename(mm, Winning_Date) + ', ' + datename(yyyy, Winning_Date) AS 
FROM Prize_Table 
ORDER BY Winning_Date DESC 
+1

+1 - Bah,輪到我回報:) – LittleBobbyTables

+0

哦,我的天啊,那是快的......我會試試看! – user1447679

+1

我能夠使用這個。非常感謝。 – user1447679

0

試試這個:

SELECT FirstName, LastName, Prize, (DATENAME(month, Winning_Date) + ',' + DATENAME(year, Winning_Date)) AS "MonthYear" FROM Prize_Table 
ORDER BY Winning_Date DESC 
0

試試DATENAME()函數。

這將抓取月份的名稱和年份作爲字符串。因此,您的選擇語句可以更改爲:

SELECT 
    FirstName, 
    LastName, 
    Prize, 
    DATENAME(month, Winning_Date) + ', ' + DATENAME(year, Winning_Date) 
FROM Prize_Table 
ORDER BY 
    Winning_Date DESC 

訂購應該仍然有效。

+0

這是正確的。它不會讓我選擇兩個正確的答案!非常感謝你。 – user1447679

0

下面是該查詢:

SELECT FirstName, LastName, Prize, DATENAME(MM, Winning_Date) + ', ' + CAST(YEAR(Winning_Date)  AS VARCHAR(4)) AS [Winning_Date] FROM Prize_Table 
ORDER BY DATEPART(month,Winning_Date) DESC , DATEPART(year,Winning_Date) DESC 
0

這真的取決於你的SQL味(如MySQL和T-SQL)。

在mysql中你可以做這樣的事情。

Select concat(winner, concat(' ', date_format(Winning_date, '%m%d%Y'))) 

在T-SQL(MSSQL中的服務器所使用的),你可以使用

select winner + ' ' + CONVERT(VARCHAR, Winning_date, 120) 

在轉換函數調用中的數字表示的日期轉換爲格式。有關格式的更多示例,請參閱here

Aaah。我沒有看到sqlserver 2008的標籤。我將這個留給其他人使用,很難。

相關問題