2

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

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

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

现在该Winning_Date列是 data type date

所以这是我的问题。

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

例如:

January, 2012

如果能够仅将月份缩写(Jan)和年份放在 span 标签内的两个不同位置,这也将是一件好事。有点像你看到那些带有月份、年份……和/或日期等的小日历图标。

JAN

2012

我想确保我保留按日期排序的能力......月,年都可以。

谢谢您的帮助。

4

6 回答 6

2

你可以这样做:

SELECT FirstName,
       LastName,
       Prize,
       datename(mm, Winning_Date) + ', ' + datename(yyyy, Winning_Date) AS 
FROM Prize_Table
ORDER BY Winning_Date DESC
于 2012-08-28T14:49:57.200 回答
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)

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

有关格式的更多示例,请参见此处

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

于 2012-08-28T14:55:37.803 回答
0

尝试这个:

SELECT FirstName, LastName, Prize, (DATENAME(month, Winning_Date) + ',' + DATENAME(year, Winning_Date)) AS "MonthYear"  FROM Prize_Table
ORDER BY Winning_Date DESC
于 2012-08-28T14:52:28.693 回答
0

Convert 函数将数据显示为文本。

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

您可以谷歌查找日期格式功能或使用替换()等写你的。

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

于 2012-08-28T14:53:22.333 回答
0

试试这个DATENAME()功能。

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

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

订购应该仍然有效。

于 2012-08-28T14:53:56.367 回答
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
于 2012-08-28T14:54:07.327 回答