如何使用SELECT语句将SQL中的日期转换为文本?

时间:2012-08-28 14:46:15

标签: sql sql-server-2008 date datetime

我一直在寻找“类似”问题的复杂解决方案,但我认为我需要的更简单。

我有一张桌子里面有“赢家”。姓名,地址等......最重要的是,他们赢得的日期。然后我想在网站上显示这个。

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

现在Winning_Date列的数据类型为date

所以这是我的问题。

如果日期为2012-01-01,我希望能够以常规文字显示月份和年份。

例如:

January, 2012

能够将月份缩写(Jan)和年份放在span标签中的两个不同位置也是很好的。有点像你看到那些带有月份,年份和/或日期等的小日历图标

JAN

2012

我想确保我保留按日期订购的能力......月,年很好。

感谢您的帮助。

6 个答案:

答案 0 :(得分:2)

你可以这样做:

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

答案 1 :(得分:0)

试试这个:

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

答案 2 :(得分:0)

转换功能会将数据显示为文本。

请参阅http://msdn.microsoft.com/en-us/library/ms187928.aspx

您可以谷歌查找日期格式化功能或使用replace()等编写您的功能。

在MSSQL中您可以:按结果集中的内容排序。
并非所有DBMS都具备这种能力。

答案 3 :(得分:0)

尝试使用DATENAME()功能。

这将获取月份的名称,并将年份作为字符串。因此,您的select语句可以更改为:

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

订购仍然有效。

答案 4 :(得分: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

答案 5 :(得分:0)

这实际上取决于你的sql-flavor(例如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)

convert-function调用中的数字表示日期转换为的格式。

有关格式的更多示例,请参阅here

啊哈。我没有看到sqlserver 2008的标签。我将其留给其他人,很难。