SQL从年份和数字字段创建日期时间
我在视图中有两列,它们为我提供了日期部分 它们是月数和年数 我需要一个新的列,它是一个日期/时间字段。它必须是其他两列提供的月份和年份的第一个 i、 eSQL从年份和数字字段创建日期时间,sql,sql-server,sql-server-2008,reporting-services,ssrs-2008,Sql,Sql Server,Sql Server 2008,Reporting Services,Ssrs 2008,我在视图中有两列,它们为我提供了日期部分 它们是月数和年数 我需要一个新的列,它是一个日期/时间字段。它必须是其他两列提供的月份和年份的第一个 i、 e42011需要 2011-04-01 00:00:00.000 在新专栏中 当前设置如下所示: month_number incident_year 4 2011 5 2011 6 2011 7 2011 8 2011 9 2011 10 2011 11 2011 12 2011 1 2012 2 2
42011
需要
2011-04-01 00:00:00.000
在新专栏中
当前设置如下所示:
month_number incident_year
4 2011
5 2011
6 2011
7 2011
8 2011
9 2011
10 2011
11 2011
12 2011
1 2012
2 2012
3 2012
4 2012
5 2012
6 2012
您还可以通过使用0-date使其不那么冗长:
SELECT
incident_year, month_number,
dt = DATEADD(MONTH, (incident_year-1900)*12+month_number-1, 0)
FROM dbo.view_name;
在SQL Server 2012中,您将能够执行更简单的操作:
SELECT DATEFROMPARTS(incident_year, month_number, 1)
FROM dbo.view_name;
您还可以通过使用0-date使其不那么冗长:
SELECT
incident_year, month_number,
dt = DATEADD(MONTH, (incident_year-1900)*12+month_number-1, 0)
FROM dbo.view_name;
在SQL Server 2012中,您将能够执行更简单的操作:
SELECT DATEFROMPARTS(incident_year, month_number, 1)
FROM dbo.view_name;
是的,这是行不通的:
CAST(month\u number AS varchar)
将返回'4'
,而不是'04'
@X-Zero默认设置实际上不需要前导零(尽管我不确定所有语言或日期格式设置)。正如(现已删除)评论所说:@X-Zero我对此表示怀疑。即使添加4也会返回您04@AaronBertrand:我的错误更新了我的答案!是的,这是行不通的:CAST(month\u number AS varchar)
将返回'4'
,而不是'04'
@X-Zero默认设置实际上不需要前导零(尽管我不确定所有语言或日期格式设置)。正如(现已删除)评论所说:@X-Zero我对此表示怀疑。即使添加4也会返回您04@AaronBertrand:我的错误更新了我的答案!您只需要将列作为查询的输出,对吗?或者您正在尝试向视图中添加一个新列?您只需要将该列作为查询的输出,对吗?或者您正在尝试向视图中添加新列?
SELECT DATEFROMPARTS(incident_year, month_number, 1)
FROM dbo.view_name;