

























例4-61:
·stuff()
stuf()函數(shù)用另一子串替換字符串指定位置、長度的子串,其語法如下:
stuff (<character_expression1>, <start_ position>, <length>,<character_expression2>)
如果起始位置為負(fù)或長度值為負(fù),或者起始位置大于character_expression1 的長度,則stuff() 函數(shù)返回null 值。如果length 長度大于character_expression1 的長度,則character_expression1 只保留首字符。
例4-62:
6、數(shù)據(jù)類型轉(zhuǎn)換函數(shù)
在一般情況下,sql server 會自動完成數(shù)據(jù)類型的轉(zhuǎn)換,例如,可以直接將字符數(shù)據(jù)類型或表達(dá)式與datatime 數(shù)據(jù)類型或表達(dá)式比較當(dāng)表達(dá)式中用了integer、 smallint或tinyint 時,sql server 也可將integer 數(shù)據(jù)類型或表達(dá)式轉(zhuǎn)換為smallint數(shù)據(jù)類型或表達(dá)式,這稱為隱式轉(zhuǎn)換。如果不能確定sql server 是否能完成隱式轉(zhuǎn)換或者使用了不能隱式轉(zhuǎn)換的其它數(shù)據(jù)類型,就需要使用數(shù)據(jù)類型轉(zhuǎn)換函數(shù)做顯式轉(zhuǎn)換了。此類函數(shù)有兩個:
·cast()
cast() 函數(shù)語法如下:
cast (<expression> as <data_ type>[ length ])
·convert()
convert() 函數(shù)語法如下:
convert (<data_ type>[ length ], <expression> [, style])
提醒: 1、data_type為sql server系統(tǒng)定義的數(shù)據(jù)類型,用戶自定義的數(shù)據(jù)類型不能在此使用。
2、length用于指定數(shù)據(jù)的長度,缺省值為30。
3、把char或varchar類型轉(zhuǎn)換為諸如int或samllint這樣的integer類型、結(jié)果必須是帶正號(+)或負(fù)號(-)的數(shù)值。
4、text類型到char或varchar類型轉(zhuǎn)換最多為8000個字符,即char或varchar數(shù)據(jù)類型是最大長度。
5、image類型存儲的數(shù)據(jù)轉(zhuǎn)換到binary或varbinary類型,最多為8000個字符。
6、把整數(shù)值轉(zhuǎn)換為money或smallmoney類型,按定義的國家的貨幣單位來處理,如人民幣、美元、英鎊等。
7、bit類型的轉(zhuǎn)換把非零值轉(zhuǎn)換為1,并仍以bit類型存儲。
8、試圖轉(zhuǎn)換到不同長度的數(shù)據(jù)類型,會截短轉(zhuǎn)換值并在轉(zhuǎn)換值后顯示“+”,以標(biāo)識發(fā)生了這種截斷。
例4-63:
例4-64:
例4-65:

用convert() 函數(shù)的style 選項能以不同的格式顯示日期和時間。style 是將datatime 和smalldatetime 數(shù)據(jù)轉(zhuǎn)換為字符串時所選用的由sql server 系統(tǒng)提供的轉(zhuǎn)換樣式編號,不同的樣式編號有不同的輸出格式。如表4-8 所示。
例4-66:
7、日期函數(shù)
日期函數(shù)用來操作datetime 和smalldatetime 類型的數(shù)據(jù),執(zhí)行算術(shù)運(yùn)算。與其它函數(shù)一樣,可以在select 語句的select 和where 子句以及表達(dá)式中使用日期函數(shù)。其使用方法如下:
日期函數(shù)參數(shù),其中參數(shù)個數(shù)應(yīng)不同的函數(shù)而不同。
·day()
day() 函數(shù)語法如下:
day (<date_expression>)
day() 函數(shù)返回date_expression 中的日期值。
例4-67:
在上例中,day() 函數(shù)使用整數(shù)值作參數(shù),系統(tǒng)從1900 年1 月1 日起往后數(shù)指定整數(shù)值+1, 天再返回其日期。
·month()
month() 函數(shù)語法如下:
month (<date_expression>)
month() 函數(shù)返回date_expression 中的月份值。
例4-68:
與day() 函數(shù)不同的是,month() 函數(shù)的參數(shù)為整數(shù)時,一律返回整數(shù)值1,即sql server 認(rèn)為其是1900 年1 月。
例4-69:
·year()
year() 函數(shù)語法如下:
year (<date_expression>)
year() 函數(shù)返回date_expression 中的年份值。
例4-70:
提醒:在使用日期函數(shù)時,其日期值應(yīng)在1753年到9999年之間,這是sql server系統(tǒng)所能識別的日期范圍,否則會出現(xiàn)錯誤。
例4-71:
·dateadd()
dateadd() 函數(shù)語法如下:
dateadd (<datepart>, <number>, <date>)
dateadd() 函數(shù)返回指定日期date 加上指定的額外日期間隔number 產(chǎn)生的新日期。參數(shù)“datepart” 在日期函數(shù)中經(jīng)常被使用,它用來指定構(gòu)成日期類型數(shù)據(jù)的各組件,如年、季、月、日、星期等。其取值如表4-9 所示:
例4-72:

·datediff()
datediff() 函數(shù)語法如下:
datediff() (<datepart>, <date1>, <date2>)
datediff() 函數(shù)返回兩個指定日期在datepart 方面的不同之處,即date2 超過date1的差距值,其結(jié)果值是一個帶有正負(fù)號的整數(shù)值。針對不同的datepart, datediff()函數(shù)所允許的最大差距值不一樣,如:datepart 為second 時,datediff() 函數(shù)所允許的最大差距值為68: 年datepart 為millisecond 時,datediff() 函數(shù)所允許的最大差距值為24 天20 小時30 分23 秒647 毫秒。
例4-73: 查詢在本單位工作了8 年以上的員工的姓名和所在的部門,結(jié)果按在本單位工作的時間長短排序。
·datename()
datename() 函數(shù)語法如下:
datename (<datepart>, <date)>
datename() 函數(shù)以字符串的形式返回日期的指定部分此部分。由datepart 來指定。
例4-74: 查詢工資大于等于7000 的員工的姓名、部門編號、工資和進(jìn)入單位的年份,結(jié)果按工資高低降序排列。

·datepart()
datepart() 函數(shù)語法如下:
datepart (<datepart>, <date>)
datepart() 函數(shù)以整數(shù)值的形式返回日期的指定部分。此部分由datepart 來指定。
datepart (dd, date) 等同于day (date)
datepart (mm, date) 等同于month (date)
datepart (yy, date) 等同于year (date)
例4-75:
·getdate()
getdate() 函數(shù)語法如下:
getdate()
getdate() 函數(shù)以datetime 的缺省格式返回系統(tǒng)當(dāng)前的日期和時間,它常作為其它函數(shù)或命令的參數(shù)使用。
例4-71:
新聞熱點(diǎn)
疑難解答
圖片精選