日期:2014-05-18  浏览次数:20473 次

SQL关于BIGINT数据类型的问题
bigint数据类型范围是–9 223 372 036 854 775 808~9 223 372 036 854 775 807
看下面的例子:
SQL code

DECLARE @a BIGINT,
        @b BIGINT ;
SET @a=900;
SET @b=20120512*10000+@a;
SELECT @b;
/*结果:
消息 8115,级别 16,状态 2,第 4 行
将 expression 转换为数据类型 int 时出现算术溢出错误。

*/


请问为什么会报错啊?@b没有超出范围啊,请高手解答下。
我想使@b=2012050120900 然后转换为时间类型‘201205120900’可以吗??

------解决方案--------------------
SQL code
DECLARE @a BIGINT,
        @b BIGINT ;
SET @a=900;
SET @b=cast(20120512 as bigint)*10000+@a;
SELECT @b;

-- 结果
201205120900