Sql 将日期时间转换为数字和年份中的月份
我有一个日期时间,例如2014-04-24 00:28:53.897,并希望在select查询中将其转换为数字月份和2014年4月份。使用DATEPARTSql 将日期时间转换为数字和年份中的月份,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我有一个日期时间,例如2014-04-24 00:28:53.897,并希望在select查询中将其转换为数字月份和2014年4月份。使用DATEPART SELECT CONCAT(DATEPART(mm,datefield),' ',DATEPART(yyyy,datefield)) AS monthyear FROM yourtable SQL FIDDLE:您可以使用如下内容:(在这里,您将GETDATE()替换为日期/日期时间列) 为此使用DATEPART SELECT Conver
SELECT CONCAT(DATEPART(mm,datefield),' ',DATEPART(yyyy,datefield)) AS monthyear
FROM yourtable
SQL FIDDLE:您可以使用如下内容:(在这里,您将GETDATE()替换为日期/日期时间列) 为此使用DATEPART
SELECT Convert(VARCHAR(10),DATEPART(mm,yourfield),111) + ' ' +
Convert(VARCHAR(10),DATEPART(yyyy,yourfield),111) AS outputmonthyear
FROM yourtableName
日期部件定义和用法
函数用于返回日期/时间的单个部分,例如年、月、日、小时、分钟等
语法DATEPART(DATEPART,date),其中date是有效的日期表达式
欲了解更多详情,请访问
试试这个
SELECT FORMAT(GETDATE(),'MM yyyy')
用datetime列替换getdate
希望它能对您有所帮助。您可以在SQL Server 2012及更高版本(或其他提供
CONCAT
)上使用以下内容:
设置成一种格式。
声明@d datetime='2014-04-24 00:28:53.897'
选择格式(@d,“MM yyyy”)
这行不通!今天(2015-05-11)的结果将是一个整数2020,因为您的命令将计算2015+5!这里与Matt的解决方案相同:您必须将每个datepart转换为varchar,否则sql server将把“+”解释为数学加法,并将进行计算,例如2015+5=2020可能是最好的答案:)可能您需要指出这不会低于sql server 2012+1,但OP可能需要
选择格式(GETDATE(),'M yyyy'))
这是因为他们的示例输出没有当月的前导零。我从来没有真正研究过FORMAT()函数,但看起来不错!简洁明了+1:)用于完成:对于大量行(在我的测试50K中),格式化函数似乎比使用“手动”连接慢得多。。。正如信息一样,如果您遇到性能问题。。。
SELECT FORMAT(GETDATE(),'MM yyyy')
SELECT CONCAT(DATEPART(mm,dateField),' ',DATEPART(yyyy,dateField))
AS MONTH_YEAR
FROM TABLENAME;
/* sql code */
--if you have datetime as text use this to convert to date
--select cast('2014-04-24 00:28:53.897' as date)
select convert(varchar(2), month(cast('2014-04-24 00:28:53.897' as date))) + ' ' + convert(char(4), year(cast('2014-04-24 00:28:53.897' as date)))
--if you have datetime field already use this
select convert(varchar(2), month(getdate())) + ' ' + convert(char(4), year(getdate()))