1. 程式人生 > >sql server之int型轉化為datetime

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)