我有2个x字段T1.period和T1.year都有数据类型smallint 使用SQL Management Studio 2014如何连接它们并将结果作为DATE类型返回?
此外,T1.period的值为1到12我如何将其填充到01到12 ...或者将更改为日期类型将其排序?
非常感谢!
示例数据......
期间年 2015年1月 2 2009年 12 2009年 2010年11月 10 2011年
结果将是...... 日期 2015年1月1日 2009年1月2日 01/12/2009 01/11/2010 01/10/2011
谢谢!
看起来很难挣扎到列表 - 抱歉:(
答案 0 :(得分:1)
转换您的价值观老式的方式
假设您的t1.period
值实际上仅代表一个月,您可以考虑将您的值转换为字符串,然后通过CAST()
函数将该连接结果转换为日期:
SELECT CAST(CAST(t1.year AS VARCHAR) + '-' + CAST(t1.period AS VARCHAR) + '-1' AS DATE)
这将构建一个类似于{year}-{month}-1
的字符串,然后将其解析为DATE
,并且应该为您提供给定月/年的第一个日期。
使用DATEFROMPARTS()
功能
SQL Server 2012及更高版本实际上支持DATEFROMPARTS()
函数,该函数允许您传入各个部分(年,月,日)以构建相应的DATE
对象,更容易读取语法:
SELECT DATEFROMPARTS(t1.year,t1.period,1)
此外,如果您需要DATETIME
个对象,则可以按预期使用DATETIMEFROMPARTS()
。