Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 将日期时间转换为数字和年份中的月份_Sql_Sql Server_Sql Server 2008 - Fatal编程技术网

Sql 将日期时间转换为数字和年份中的月份

Sql 将日期时间转换为数字和年份中的月份,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

我有一个日期时间,例如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 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()))