Sql server 2008 如何连接日期和日期;年到一列sql

Sql server 2008 如何连接日期和日期;年到一列sql,sql-server-2008,Sql Server 2008,我在一列中有日期,在一列中有年份,我需要连接并得到2017年1月的答案,应该是实际月份顺序,这很简单。我假设两种列数据类型都是DateTime或Date。请尝试以下操作: SELECT CONCAT(column1, ',', column2) AS Date, FROM table; SELECT CONCAT(SUBSTRING(DATENAME(month, YourMonthColumn), 0,4), '-', Year(YourYearColumn)) FROM Y

我在一列中有日期,在一列中有年份,我需要连接并得到2017年1月的答案,应该是实际月份顺序,这很简单。我假设两种列数据类型都是DateTime或Date。请尝试以下操作:

SELECT CONCAT(column1, ',', column2) AS Date,
      FROM   table;
SELECT CONCAT(SUBSTRING(DATENAME(month, YourMonthColumn), 0,4), '-', Year(YourYearColumn))
FROM YourTableName

Sql Server 2008兼容:(无
concat()
和无
format()

使用106(或113)的样式,只需使用
mon-yyyy
部分,并将
'
替换为
'-'

并使用截短到月份的日期,因此我们可以使用
dateadd(month,datediff(month,0,[Date]),0)对其进行分组和订购

rextester演示:

返回:

+-----------+------+
| MonthYear | Days |
+-----------+------+
| Dec-2016  |   31 |
| Jan-2017  |   31 |
| Feb-2017  |   28 |
| Mar-2017  |   10 |
+-----------+------+

交替使用月份和连接年份:

select MonthYear = left(datename(month,dateadd(month, datediff(month, 0, [Date]), 0)),3)
       + '-'
       + convert(char(4),year(dateadd(month, datediff(month, 0, [Date]), 0)))
       , Days = count(*)
from dates
group by dateadd(month, datediff(month, 0, [Date]), 0)
order by dateadd(month, datediff(month, 0, [Date]), 0)

添加一些数据样本并指定数据类型
select MonthYear = left(datename(month,dateadd(month, datediff(month, 0, [Date]), 0)),3)
       + '-'
       + convert(char(4),year(dateadd(month, datediff(month, 0, [Date]), 0)))
       , Days = count(*)
from dates
group by dateadd(month, datediff(month, 0, [Date]), 0)
order by dateadd(month, datediff(month, 0, [Date]), 0)