最近有个任务是获取云服务器数据库中的总人数,sql之后发现int类型不能满足我的要求,就用了bigint类型 ,
例如:select Cast(count(distinct userid)as bigint) from T_dance_Pay_Cash_Log
之后计算付费总额的时间发现数据还是溢出,最后去网上搜了搜,没搜到,就想到了上次日期类型转换
日期
LogDate>='2015-01-22 00:00:00' and LogDate<'2015-01-23 00:00:00'
等价于
convert(varchar(10),LogDate,120)='2015-01-22'
值得注意的是2015-01-22的月份是01而不是1,学友们一定要注意,这是个坑,而且这样的效率不高但一般可以用(我一直用)。
之后就调用了CONVERT() 函数是把日期转换为新数据类型的通用函数
例如:SELECT sum(convert(numeric(20,0),GCash)) FROM T_dance_UserInfo
终于把int类型溢出的问题解决了ok的解决了这个问题。
备注:
bigint(-2^63到2^63-1)存储大小为 8个字节,
int (-2^31到2^31 - 1)存储大小为4个字节,
smallint ( -2^15 到 2^15 - 1)存储大小为2个字节,
tinyint 0 到 255 存储大小为 1 字节