Tsql 将附加文本转换为日期
因此连接的字符串如下所示:Tsql 将附加文本转换为日期,tsql,Tsql,因此连接的字符串如下所示:04/05/88 试着让它工作 试过这个,我现在有个约会,但它给我1900年或1905年,这是不对的 convert(datetime, BIRTH_MM + '/' + BIRTH_DD + '/' + BIRTH_YY, 103) as Birthdate 更新 尝试了一些东西,但还没有完全实现: convert(datetime, BIRTH_MM + BIRTH_DD + BIRTH_YY, 103) as Birthdate 在不查看这些值上的表
04/05/88
试着让它工作
试过这个,我现在有个约会,但它给我1900年或1905年,这是不对的
convert(datetime, BIRTH_MM + '/' + BIRTH_DD + '/' + BIRTH_YY, 103) as Birthdate
更新
尝试了一些东西,但还没有完全实现:
convert(datetime, BIRTH_MM + BIRTH_DD + BIRTH_YY, 103) as Birthdate
在不查看这些值上的表结构或数据类型的情况下,您可以使用类似的方法:
case when(BIRTH_DD > 0 and BIRTH_MM > 0 and BIRTH_YY > 0)
then
convert(datetime, cast(BIRTH_DD as varchar(1)) + '/' + cast(_BIRTH_MM as varchar(2)) + '/' + cast(BIRTH_YY as varchar(4)), 103)
else
convert(datetime, '1900-01-01', 103) as Birthdate,
end
请参见表中的
BIRTH_-MM
、BIRTH_-DD
和BIRTH_-YY
列?这是从哪里来的?这是查询的一部分。它必须是表中的列…T-SQL。字段在DB@CoffeeAddict这种转换应该是有效的。演示的值与inttry一样,无法转换(datetime,cast(BIRTH_DD as varchar(2))+'/'+cast(BIRTH_MM as varchar(2))+'/'+cast(BIRTH_YY as varchar(4)),103)as birthDate是您的BIRTH_YY
四个字符还是两个?@CoffeeAddict您应该在问题中放置代码更新,而不是在答案中。
declare @BIRTH_MM int = 04
declare @BIRTH_DD int = 05
declare @BIRTH_YY int = 1988
select convert(datetime,
cast(@BIRTH_MM as varchar(2)) + '/' +
cast(@BIRTH_DD as varchar(2)) + '/' +
cast(@BIRTH_YY as varchar(4)), 101) as Birthdate