1. 程式人生 > >SQL Server資料庫日期型1900-01-01處理

SQL Server資料庫日期型1900-01-01處理

SQL Server資料庫日期型格式處理

在專案中使用SQL Server資料庫會遇到有趣的問題,前端頁面如果傳遞一個日期型字串為’ ‘,插入到資料庫後值變為1900-01-01,前端頁面也會顯示這個日期

這是由於資料庫中採用了datetime型欄位,它是預設由8個位元組組成,儲存型別為數字,前4個位元組儲存1900-01-01之前/之後的天數,後4個位元組儲存00:00後的毫秒數。

主要說下處理方式:
1. 資料庫不採用datetime型,直接儲存為varchar型,只是每次儲存時用java程式碼或者SQL語句中去格式化,如:convert(varchar(10),日期,120)。
2. 傳入值為 ” 時,資料庫中會存為1900-01-01,那直接傳入null即可。
3. 取值時遇1900-01-01進行處理,java或者SQL都可以,如:select DemoTime = case when jobTime = ‘1900-1-1’ then ” when DemoTime <> ‘1900-1-1’ then substring(convert(varchar,DemoTime,120),1,10) end from table

總之,要麼不用datetime型欄位,用了就在寫或者讀時去處理即可,各人要求不同,可以自如處理。