一、字符轉換函數
1、ASCII()
返回字符表達式最左端字符的ASCII 碼值。在ASCII()函數中,純數字的字符串可不用‘'括起來,但含其它字符的字符串必須用‘'括起來使用,否則會出錯。
2、CHAR()
將ASCII 碼轉換為字符。如果沒有輸入0 ~ 255 之間的ASCII 碼值,CHAR() 返回NULL 。
3、LOWER()和UPPER()
LOWER()將字符串全部轉為小寫;UPPER()將字符串全部轉為大寫。
4、STR()
把數值型數據轉換為字符型數據。
STR (<float_expression>[,length[, <decimal>]])
length 指定返回的字符串的長度,decimal 指定返回的小數位數。如果沒有指定長度,缺省的length 值為10, decimal 缺省值為0。
當length 或者decimal 為負值時,返回NULL;
當length 小於小數點左邊(包括符號位)的位數時,返回length 個*;
先服從length ,再取decimal ;
當返回的字符串位數小於length ,左邊補足空格。
二、去空格函數
1、LTRIM() 把字符串頭部的空格去掉。
2、RTRIM() 把字符串尾部的空格去掉。
三、取子串函數
1、left()
LEFT (<character_expression>, <integer_expression>)
返回character_expression 左起 integer_expression 個字符。
2、RIGHT()
RIGHT (<character_expression>, <integer_expression>)
返回character_expression 右起 integer_expression 個字符。
3、SUBSTRING()
SUBSTRING (<expression>, <starting_ position>, length)
返回從字符串左邊第starting_ position 個字符起length個字符的部分。
四、字符串比較函數
1、CHARINDEX()
返回字符串中某個指定的子串出現的開始位置。
CHARINDEX (<'substring_expression'>, <expression>)
其中substring _expression 是所要查找的字符表達式,expression 可為字符串也可為列名表達式。如果沒有發現子串,則返回0 值。
此函數不能用於TEXT 和IMAGE 數據類型。
2、PATINDEX()
返回字符串中某個指定的子串出現的開始位置。
PATINDEX (<'%substring _expression%'>, <column_ name>)其中子串表達式前後必須有百分號“%”否則返回值為0。
與CHARINDEX 函數不同的是,PATINDEX函數的子串中可以使用通配符,且此函數可用於CHAR、 VARCHAR 和TEXT 數據類型。
五、字符串操作函數
1、QUOTENAME()
返回被特定字符括起來的字符串。
QUOTENAME (<'character_expression'>[, quote_ character]) 其中quote_ character 標明括字符串所用的字符,缺省值為“[]”。
2、REPLICATE()
返回一個重復character_expression 指定次數的字符串。
REPLICATE (character_expression integer_expression) 如果integer_expression 值為負值,則返回NULL 。
3、REVERSE()
將指定的字符串的字符排列順序顛倒。
REVERSE (<character_expression>) 其中character_expression 可以是字符串、常數或一個列的值。
4、REPLACE()
返回被替換了指定子串的字符串。
REPLACE (<string_expression1>, <string_expression2>, <string_expression3>) 用string_expression3 替換在string_expression1 中的子串string_expression2。
4、SPACE()
返回一個有指定長度的空白字符串。
SPACE (<integer_expression>) 如果integer_expression 值為負值,則返回NULL 。
5、STUFF()
用另一子串替換字符串指定位置、長度的子串。
STUFF (<character_expression1>, <start_ position>, <length>,<character_expression2>)
如果起始位置為負或長度值為負,或者起始位置大於character_expression1 的長度,則返回NULL 值。
如果length 長度大於character_expression1 中 start_ position 以右的長度,則character_expression1 只保留首字符。
六、數據類型轉換函數
1、CAST()
CAST (<expression> AS <data_ type>[ length ])
2、CONVERT()
CONVERT (<data_ type>[ length ], <expression> [, style])
1)data_type為SQL Server系統定義的數據類型,用戶自定義的數據類型不能在此使用。
2)length用於指定數據的長度,缺省值為30。
3)把CHAR或VARCHAR類型轉換為諸如INT或SAMLLINT這樣的INTEGER類型、結果必須是帶正號或負號的數值。
4)TEXT類型到CHAR或VARCHAR類型轉換最多為8000個字符,即CHAR或VARCHAR數據類型是最大長度。
5)IMAGE類型存儲的數據轉換到BINARY或VARBINARY類型,最多為8000個字符。
6)把整數值轉換為MONEY或SMALLMONEY類型,按定義的國家的貨幣單位來處理,如人民幣、美元、英鎊等。
7)BIT類型的轉換把非零值轉換為1,並仍以BIT類型存儲。
8)試圖轉換到不同長度的數據類型,會截短轉換值並在轉換值後顯示“+”,以標識發生了這種截斷。
9)用CONVERT()函數的style 選項能以不同的格式顯示日期和時間。style 是將DATATIME 和SMALLDATETIME 數據轉換為字符串時所選用的由SQL Server 系統提供的轉換樣式編號,不同的樣式編號有不同的輸出格式。
七、日期函數
1、day(date_expression)
返回date_expression中的日期值
2、month(date_expression)
返回date_expression中的月份值
3、year(date_expression)
返回date_expression中的年份值
4、DATEADD()
DATEADD (<datepart>, <number>, <date>)
返回指定日期date 加上指定的額外日期間隔number 產生的新日期。
5、DATEDIFF()
DATEDIFF (<datepart>, <date1>, <date2>)
返回兩個指定日期在datepart 方面的不同之處,即date2 超過date1的差距值,其結果值是一個帶有正負號的整數值。
6、DATENAME()
DATENAME (<datepart>, <date>)
以字符串的形式返回日期的指定部分此部分。由datepart 來指定。
7、DATEPART()
DATEPART (<datepart>, <date>)
以整數值的形式返回日期的指定部分。此部分由datepart 來指定。
DATEPART (dd, date) 等同於DAY (date)
DATEPART (mm, date) 等同於MONTH (date)
DATEPART (yy, date) 等同於YEAR (date)
8、GETDATE()
以DATETIME 的缺省格式返回系統當前的日期和時間。
重點
Sql Server中的日期與時間函數 ?蒰(寢?
1. 當前系統日期、時間 F桗?赝Q?
select getdate() 鈙H 倂建
鶞Oh牧/"葵
2. dateadd 在向指定日期加上一段時間的基礎上,返回新的 datetime 值 r鯔俏??
例如:向日期加上2天 ?5皴?煃
select dateadd(day,2,'2004-10-15') --返回:2004-10-17 00:00:00.000 Ew郬*矝?
?礛娞>??
3. datediff 返回跨兩個指定日期的日期和時間邊界數。 jou秙 溽
select datediff(day,'2004-09-01','2004-09-18') --返回:17 ?鼄G驂W
毰筒???
4. datepart 返回代表指定日期的指定日期部分的整數。 劸賠D///穙
SELECT DATEPART(month, '2004-10-15') --返回 10 Rk銍倝K$7$
欤晛u!:?
5. datename 返回代表指定日期的指定日期部分的字符串 堼梶 U嚨
SELECT datename(weekday, '2004-10-15') --返回:星期五 S吜瞎d湺
'茜?鈠6
6. day(), month(),year() --可以與datepart對照一下 V?u罞戀/m
?HZ?S
select 當前日期=convert(varchar(10),getdate(),120) s1 喨??
,當前時間=convert(varchar(8),getdate(),114) 即N屾蛶4
抗栳B銫K'/
select datename(dw,'2004-10-15') ?3慯萳籋?
b?|
select 本年第多少周=datename(week,'2004-10-15') 宎梯d<短?
,今天是周幾=datename(weekday,'2004-10-15') 牶?1嶙挈
鱒聈W]?n
奄<8姓婨?
函數 參數/功能 y?蓦??
GetDate( ) 返回系統目前的日期與時間 '瞫濾#縶?
DateDiff (interval,date1,date2) 以interval 指定的方式,返回date2 與date1兩個日期之間的差值 date2-date1 鸊脺 儔砍?
DateAdd (interval,number,date) 以interval指定的方式,加上number之後的日期 "€鐺e蠅5流
DatePart (interval,date) 返回日期date中,interval指定部分所對應的整數值 鑒/蟉錯渥
DateName (interval,date) 返回日期date中,interval指定部分所對應的字符串名稱 杶逯夤脅c
呓h:l=?
參數 interval的設定值如下: 掅YW@鲫=
8?濠?
值 縮 寫(Sql Server) (Access 和 ASP) 說明 蔟T)軤
Year Yy yyyy 年 1753 ~ 9999 A玍癬0qg
Quarter Qq q 季 1 ~ 4 駨#伥沠?F;
Month Mm m 月1 ~ 12 O?c(a耀蒪
Day of year Dy y 一年的日數,一年中的第幾日 1-366 Y觲挰褽
Day Dd d 日,1-31 粵莖綪嶴诳
Weekday Dw w 一周的日數,一周中的第幾日 1-7 襪齀& ?
Week Wk ww 周,一年中的第幾周 0 ~ 51 ?X葤7膧
Hour Hh h 時0 ~ 23 F?F啇U暜?
Minute Mi n 分鐘0 ~ 59 貞』~r笍o
Second Ss s 秒 0 ~ 59 ?6Y?";d
Millisecond Ms - 毫秒 0 ~ 999 AQ彩堐?E8
?閃潽麘缂
Ъ@p彰t3€
access 和 asp 中用date()和now()取得系統日期時間;其中DateDiff,DateAdd,DatePart也同是能用於Access和asp中,這些函數的用法也類似 畵?b'?
HLu阏p缤
舉例: /0R符?氦?
1.GetDate() 用於sql server :select GetDate() 邊象4面?
X"g#$逹
2.DateDiff('s','2005-07-20','2005-7-25 22:56:32')返回值為 514592 秒 O俠札⒚
DateDiff('d','2005-07-20','2005-7-25 22:56:32')返回值為 5 天 倮KiC伅嬟
v€嶇嶽?觬
3.DatePart('w','2005-7-25 22:56:32')返回值為 2 即星期一(周日為1,周六為7) ?聕qV0?
DatePart('d','2005-7-25 22:56:32')返回值為 25即25號 y萱1雍破?
DatePart('y','2005-7-25 22:56:32')返回值為 206即這一年中第206天 髄?