sql server之int型转化为datetime

最近对sql server数据库表操作遇到如下问题:A表中s_date字段为int类型(20130901),B表中s_date字段为datetime类型(2013-09-01),比较A表和B表的s_date的大小。

错误方式:将A表s_date的int型抓换为datetime类型:CONVERT(varchar(10),CAST(s_date AS datetime),120)  

报错: Arithmetic overflow error converting expression to data type datetime.

原因:关于DateTime,在将DateTime类型,插入到数据库的时候,最容易出现的一种错误:“SqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM 之间”原因是我们在取DateTime.MinValue的值,并插入到数据库的时候,DateTime.MinValue值范围和数据库 DateTime类型数据范围不一致造成的。数据库中,DateTime类型字段,最小值1/1/1753 12:00:00

正确方式:把int先转varchar型,然后再转datetime型,CONVERT(varchar(10),CAST(CAST(s_date AS varchar) AS datetime),120)


你可能感兴趣的:(sql server之int型转化为datetime)