SQL Server中的日期时间转换


declare @v1 datetime = getdate();
declare @v2 int = 2;
select @v1 + @v2;
---------------------------
2013-01-06 08:16:20.620

,

declare @v1 datetime = getdate();
declare @v2 char(1) = '2';
select @v1 + @v2;
--------------------------

Msg 241, 16层,1州,5线
从字符串转换日期和/或时间时,转换失败。

给了错误。但是int @v2char @v2都有相同的值?

当组合两个不同类型的操作符时,将进行隐式类型转换。转换的内容由数据类型优先级规则控制。

charint的优先级都低于datetime,因此您的查询相当于:

select @v1 + cast(@v2 as datetime);

将int值2转换为datetime工作得很好,并给出1900-01-03 00:00:00.000

将字符值2转换为日期时间不能工作,因为字符串2不能被解释为有效的日期时间值。

当char转换为datetime时。通常为false..因为有些字符不能转换为日期时间..并且可能溢出..就像'2','a'等..

需要一个char值,比如'2013-01-04'…它们可以被正确转换…

相关内容

  • 没有找到相关文章