从SQL DATE获取仅月份和年份

我只需要从SQL Server中的Date字段访问Month.Year。

以及已经提出的build议,还有一个可能性,我可以从你的问题推断:
– 你仍然希望结果成为一个date
– 但是你想“丢弃”天,小时等
– 留下一年/月只date字段

SELECT DATEADD(MONTH, DATEDIFF(MONTH, 0, <dateField>), 0) AS [year_month_date_field] FROM <your_table> 

这从基准date(0)获得整个月份的数量,然后将它们添加到该基准date。 从而向下舍入到date所在的月份。

注意:在SQL Server 2008中,您仍将TIME附加为00:00:00.000这与完全删除所有date和时间的表示法并不完全相同。 也是第一天设置。 2009-10-01 00:00:00.000

 select month(dateField), year(dateField) 
 SELECT DATEPART(yy, DateVal) SELECT DATEPART(MM, DateVal) SELECT DATENAME(MM, DateVal) 
  SELECT convert(varchar(7), getdate(), 126) 

你可能想看看这个网站: http : //anubhavg.wordpress.com/2009/06/11/how-to-format-datetime-date-in-sql-server-2005/

 datename(m,column)+' '+cast(datepart(yyyy,column) as varchar) as MonthYear 

输出将如下所示:“2013年12月”

有两个SQL函数可以做到这一点:

  • DATEPART()
  • YEAR()和MONTH() 。

有关详细信息,请参阅MSDN文档 。

这也可以有帮助。

 SELECT YEAR(0), MONTH(0), DAY(0); 

要么

 SELECT YEAR(getdate()), MONTH(getdate()), DAY(getdate()); 

要么

 SELECT YEAR(yourDateField), MONTH(yourDateField), DAY(yourDateField); 

让我们这样写: YEAR(anySqlDate)MONTH(anySqlDate) 。 例如,试用YEAR(GETDATE())

 convert(varchar(7), <date_field>, 120) because 120 results in 'yyyy-MM-dd' which is varchar(10) using varchar(7) will display only year and month example: select convert(varchar(7), <date_field>, 120), COUNT(*) from <some_table> group by convert(varchar(7), <date_field>, 120) order by 1 

我用两种方式来解释你的问题。

a)你只需要月份和年份,在这种情况下,这是答案

 select [YEAR] = YEAR(getdate()) ,[YEAR] = DATEPART(YY,getdate()) , [MONTH] = month(getdate()) ,[MONTH] = DATEPART(mm,getdate()) ,[MONTH NAME] = DATENAME(mm, getdate()) 

b)

您想要以MONTH.YEAR格式显示给定的date,例如'2009-11-24 09:01:55.483' 。 所以在这种情况下产量应该是11.2009

如果这应该是这样的话,试试这个(其他的select)

 select [Month.Year] = STUFF(CONVERT(varchar(10), GETDATE(),104),1,3,'') 
 RIGHT(CONVERT(VARCHAR(10), reg_dte, 105), 7) 

尝试这个

 select to_char(DATEFIELD,'MON') from YOUR_TABLE 

例如。

 select to_char(sysdate, 'MON') from dual 

CONCAT(datepart(yy,DATE),FORMAT(date,'MM'))

给你例如201601,如果你想要一个六位数的结果

我的数据库不支持大多数上述function,但我发现这个工程:

SELECT * FROM table WHERE SUBSTR(datetime_column, starting_position, number_of_strings)=required_year_and_month;

例如: SELECT SUBSTR(created, 1,7) FROM table;

以“yyyy-mm”格式返回年份和月份