1. 程式人生 > >sql server中字串型別的日期如何比較大小

sql server中字串型別的日期如何比較大小

日期資料在Sql Server資料庫中不都是以日期型別儲存的,如果資料庫中儲存日期欄位的資料型別為varchar,而你又需要對這個日期和另外一個日期進行比較,那麼該怎麼辦呢?總結有以下方法

(1)方法一

這個方法很容易想到,就是純粹地利用字串來比較大小,比如有一個欄位為adddate,其資料型別為varchar,要比較這個日期是不是大於某個日期,比如"2016-2-22",那麼可以直接寫:where adddate>'2016-02-22',這種方法很直觀,當然也需要在格式上有所規範,比如,如果日期是2016年2月22日,就必須將日期儲存為2016-02-22,否則比較的時候容易出錯。

(2)方法二

利用Sql提供的日期轉換函式:CONVERT (<data_ type>[ length ], <expression> [, style])
1)data_type為SQL Server系統定義的資料型別,使用者自定義的資料型別不能在此使用。
2)length用於指定資料的長度,預設值為30。 

3)用CONVERT() 函式的style 選項能以不同的格式顯示日期和時間。style 是將DATATIME 和SMALLDATETIME 資料轉換為字串時所選用的由SQL Server 系統提供的轉換樣式編號,不同的樣式編號有不同的輸出格式。如果用這種方法來判斷某一個欄位的話,則存入的日期欄位的字串格式只要是能讓sql server完成對日期的轉換就可以了,而不一定要像第一種方法中的那樣嚴格。還是說adddate欄位,比如要比較它是否大於當前的日期,就可以這樣寫:where (CONVERT(varchar, adddate) >= CONVERT(varchar, GETDATE())) 。