Answers:
除了已经给出的建议之外,我还可以从您的问题中推断出另一种
可能性:-您仍然希望结果是日期
-但您想“舍弃”日期,时间等
-离开年/月仅日期字段
SELECT
DATEADD(MONTH, DATEDIFF(MONTH, 0, <dateField>), 0) AS [year_month_date_field]
FROM
<your_table>
这将从基准日期(0)获得整月数,然后将它们添加到该基准日期。因此,四舍五入到日期所在的月份。
注意:在SQL Server 2008中,您仍将TIME附加为00:00:00.000,这与“完全删除”日期和时间的所有表示形式并不完全相同。DAY也设置为第一个。例如2009-10-01 00:00:00.000
select month(dateField), year(dateField)
SELECT convert(varchar(7), getdate(), 126)
您可能想查看以下网站:http : //anubhavg.wordpress.com/2009/06/11/how-to-format-datetime-date-in-sql-server-2005/
SELECT DATEPART(yy, DateVal)
SELECT DATEPART(MM, DateVal)
SELECT DATENAME(MM, DateVal)
datename(m,column)+' '+cast(datepart(yyyy,column) as varchar) as MonthYear
输出将如下所示:'2013年12月'
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)
你想从某一特定日期发言权显示'2009-11-24 09:01:55.483'
在MONTH.YEAR格式。因此,输出应为11.2009
这种情况。
如果应该这样,请尝试此方法(在其他替代方法中)
select [Month.Year] = STUFF(CONVERT(varchar(10), GETDATE(),104),1,3,'')
RIGHT(CONVERT(VARCHAR(10), reg_dte, 105), 7)
试试这个:
葡萄牙语
SELECT format(dateadd(month, 0, getdate()), 'MMMM', 'pt-pt') + ' ' + convert(varchar(10),year(getdate()),100)
结果:maio 2019
英语
SELECT format(dateadd(month, 0, getdate()), 'MMMM', 'en-US') + ' ' + convert(varchar(10),year(getdate()),100)
结果:2019年5月
如果要使用其他语言,请在链接中将“ pt-pt ”或“ en-US ”更改为任何一种
我有一个特殊的要求,即执行类似的操作以显示月份年份,可以通过以下方式完成:
SELECT DATENAME(month, GETDATE()) + '-' + CAST(YEAR(GETDATE()) AS nvarchar) AS 'Month-Year'
在我的特殊情况下,我需要将其缩减为3个字母月份的缩写,并加上2位数字的年份,看起来像这样:
SELECT LEFT(DATENAME(month, GETDATE()), 3) + '-' + CAST(RIGHT(YEAR(GETDATE()),2) AS nvarchar(2)) AS 'Month-Year'
SELECT REPLACE(RIGHT(CONVERT(VARCHAR(11), GETDATE(), 106), 8), ' ', '-')
产出:2019年3月
查询: Select datename(m,GETDATE())+'-'+cast(datepart(yyyy,GETDATE()) as varchar) as FieldName
产出:-2019年1月
我们可以使用的通用日期字段
datename(m,<DateField>)+' '+cast(datepart(yyyy,<DateField>) as varchar) as FieldName
结果:“ YYYY-MM”
SELECT cast(YEAR(<DateColumn>) as varchar) + '-' + cast(Month(<DateColumn>) as varchar)
select convert(varchar(11), transfer_date, 106)
给我我想要的日期结果格式为07 Mar 2018
我的列'transfer_date'是日期时间类型列,我在Azure上使用SQL Server 2017
选择CONCAT(MONTH(GETDATE()),'。',YEAR(GETDATE()))
产出:5.2020
选择CONCAT(DATENAME(MONTH,GETDATE()),'。',YEAR(GETDATE()))
产出:2020年5月