我一直在寻找“类似”问题的复杂解决方案,但我认为我需要的更简单。
我有一张桌子里面有“赢家”。姓名,地址等......最重要的是,他们赢得的日期。然后我想在网站上显示这个。
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
我想确保我保留按日期订购的能力......月,年很好。
感谢您的帮助。
答案 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的标签。我将其留给其他人,很难。