1、字符串函数: F% I7 k* h8 i% [! _- r
ascii(str) ) |' k9 ]2 X& \3 V# W' u n9 `
返回字符串str的第一个字符的ascii值(str是空串时返回0) ' e! L$ R& r, d
mysql> select ascii('2'); M/ \' M! `( ^/ E* F5 h
-> 50
3 Q% p$ c6 Y, K2 rmysql> select ascii(2); 0 ~, m2 w! X: i) K' a
-> 50 ; k( c! B- o) x
mysql> select ascii('dete');
d! e# G0 X# {3 v2 c -> 100
2 ^7 p1 L, v7 {9 ~ord(str) , f$ }' X8 ~6 `1 f8 C/ \
如果字符串str句首是单字节返回与ascii()函数返回的相同值。
1 d+ ^0 |6 a" Z7 ]! q8 F# B & U# y& ?1 P% k2 o3 w, P
如果是一个多字节字符,以格式返回((first byte ascii code)*256+(second byte ascii code))[*256+third byte asciicode...]
$ R T# ~& f# ^9 Qmysql> select ord('2'); _8 S0 N0 U* \* c
-> 50 3 j: ?$ T, Z f9 C- h% K% f; X9 W
8 Z% w2 M E3 Nconv(n,from_base,to_base)
) [# |3 B2 G8 I) k, g# a对数字n进制转换,并转换为字串返回(任何参数为null时返回null,进制范围为2-36进制,当to_base是负数时n作为有符号数否则作无符号数,conv以64位点精度工作)
" B$ o1 v" C ?! m2 K' Umysql> select conv("a",16,2); $ X1 u3 e) ~$ D$ T$ E
-> '1010' 5 B* n3 ~+ R0 @ N+ N0 E
mysql> select conv("6e",18,8);
/ P4 Q( a2 F% E" U2 { -> '172'
: u7 M! q' X, B. A( umysql> select conv(-17,10,-18); * o1 F0 W% ]; o
-> '-h' . o4 H$ y! C1 q8 ?7 N7 h
mysql> select conv(10+"10"+'10'+0xa,10,10);
& L! P! g. s; ~( f W -> '40' . W3 f. Z- M- s5 J4 g5 `3 \
' G1 A! _6 w' f0 G8 {9 ]bin(n)
7 s W# W' x+ [2 S( A, g" P# S把n转为二进制值并以字串返回(n是bigint数字,等价于conv(n,10,2))
8 R! t3 k* o, R0 Z$ _mysql> select bin(12);
: H3 t) y \* B" y -> '1100' : U8 ~' O( _! g$ {, s g
; D9 _2 r* Q7 C; {, r: d
oct(n) : w8 G1 ?5 [2 Z2 w7 u3 F
把n转为八进制值并以字串返回(n是bigint数字,等价于conv(n,10,8))
$ U/ e8 I p* T0 t' V0 Q. ]mysql> select oct(12);
' i% f+ P4 S" i& _' E0 s( u3 H$ L -> '14' ; U9 O6 N- A) p7 z' a
$ X5 r7 g3 i6 M Y0 N% h
hex(n) & f. ~( _2 z0 G1 Q& ]/ @$ U! w9 X' r
把n转为十六进制并以字串返回(n是bigint数字,等价于conv(n,10,16)) 8 J; l6 Z- u: _% ]% N
mysql> select hex(255); - A+ o8 D6 Y! Q7 o2 D
-> 'ff'
0 i6 y5 \, \& r7 O 2 w& z( y! a7 `, n! j, e* s6 i6 H
char(n,...) Y& C2 s8 k7 u# {
返回由参数n,...对应的ascii代码字符组成的一个字串(参数是n,...是数字序列,null值被跳过)
8 s: ?& P2 a8 M! h4 Umysql> select char(77,121,83,81,'76'); , ~3 _' a! l% d( ^, P
-> 'mysql' 8 f7 f1 Q, w" {# ?
mysql> select char(77,77.3,'77.3');
; T8 @* {! c& j# w- g- U -> 'mmm'
7 f& f6 o" W: X4 [
4 W8 \9 C, @% q8 j* M( rconcat(str1,str2,...)
; R! v3 F2 U" x8 d' f1 |把参数连成一个长字符串并返回(任何参数是null时返回null)
! p1 l6 |! M, }* imysql> select concat('my', 's', 'ql'); " M. I0 T0 Y. t1 ?
-> 'mysql'
1 Z0 K6 ?- k/ ?3 I9 v! q) U$ cmysql> select concat('my', null, 'ql'); : O/ m7 J. S) O$ c
-> null
" I( N" [3 Q& v4 y$ q( [% T9 umysql> select concat(14.3);
! }) B1 l0 d- r# `$ @" w. {# P -> '14.3' 0 w2 N5 S8 k2 a. m, o. r
7 w0 k0 I5 k5 s: P [0 B/ d# S
length(str)
$ h1 Y9 S4 Y1 p; l7 q/ a' Qoctet_length(str) 1 F0 V! e, ^! O7 G( ^
char_length(str)
' \: T5 u. M0 z% B2 \0 w5 B$ G4 [character_length(str) * v- F) H8 R' s
返回字符串str的长度(对于多字节字符char_length仅计算一次)7 E$ J) y% h6 b1 E! g) y6 X4 M
mysql> select length('text');
1 e0 E+ }- [1 r3 p6 ^ -> 4
+ x n2 [/ F. E# G7 N. J4 vmysql> select octet_length('text'); 3 ~+ \1 G2 z0 ], ?8 Y
-> 4
4 B V; w' W) V1 ^" I: R( L 9 D% ` R6 Y- }) {) s. ~
locate(substr,str)
; k4 } k" j4 ^7 s* l; `7 x& _position(substr in str)
x& [! ^. t' |* n( a% g返回字符串substr在字符串str第一次出现的位置(str不包含substr时返回0) ; F$ l2 ?1 h2 ~# A8 N2 G5 q6 b
mysql> select locate('bar', 'foobarbar');
! i, u( v: u, q# v+ m -> 4
7 A$ `( R5 g6 x- i. g9 O0 o6 p `mysql> select locate('xbar', 'foobar'); 8 A c$ i5 K( _; t; h" S: K2 R
-> 0
0 S4 h2 J' {" {- @" g$ C$ Y
8 g. ^2 J' ?' o" V3 Tlocate(substr,str,pos) # U2 H5 r$ u0 a' [* t
返回字符串substr在字符串str的第pos个位置起第一次出现的位置(str不包含substr时返回0)
& B( b F, L Q; Nmysql> select locate('bar', 'foobarbar',5);
6 @2 }# e. E% M2 p* { -> 7 6 M! u$ z% e" u2 C' d Z
9 K5 D5 ?2 s/ _3 e m! K. s3 ~) N
instr(str,substr)
/ j: |3 c6 x9 [6 I& m/ f返回字符串substr在字符串str第一次出现的位置(str不包含substr时返回0) , V' {2 X3 W* T- z: [
mysql> select instr('foobarbar', 'bar');
+ ^* ?1 d( h* n/ { -> 4 : J, W6 z! n7 ~" E7 n; k8 ] c
mysql> select instr('xbar', 'foobar'); $ p: p$ l2 w* J/ S. \9 J
-> 0
: k) J, }1 {( C8 a & b. v8 ^' ^0 n* f" X0 D# @
lpad(str,len,padstr)
8 G+ o% {0 E: T3 L4 O用字符串padstr填补str左端直到字串长度为len并返回
/ j* r/ \% ]" b: d k* Rmysql> select lpad('hi',4,'??');
3 ?; X4 K$ w; R -> '??hi'
% a" J2 ]" I: w& L) G - W5 ^" y: Y; I( D5 p
rpad(str,len,padstr) . I' H/ O8 m, j+ |4 u1 m3 J
用字符串padstr填补str右端直到字串长度为len并返回
6 c" u; d# F; n: j% `mysql> select rpad('hi',5,'?'); # h4 N1 o0 x# z* V
-> 'hi???'
" f3 {5 i& p& l- K& }$ C8 y
t8 b8 A7 x* {+ ]6 i. Fleft(str,len)
& `& H0 `4 `( J9 ?6 q返回字符串str的左端len个字符 4 @2 s) `$ I% _
mysql> select left('foobarbar', 5);
: P8 ~2 S% A) R -> 'fooba'
+ U* O" ]# G' B3 B" K
% e- ] p( k; R+ X0 H qright(str,len)
$ l+ C. Y+ a& A% [& W返回字符串str的右端len个字符
5 l% N% V; ~' r5 P e3 Umysql> select right('foobarbar', 4);
: z9 W# S E, X -> 'rbar'
- X$ C; l1 m+ m8 {& n ]# W ' |7 v# j" m& Z) u/ \* o; {
substring(str,pos,len)
; D1 r3 S# ]* E4 e- D+ psubstring(str from pos for len)
- H! c7 T+ G7 C- J( p1 |mid(str,pos,len) 6 \" A( [- @5 n4 p Y3 l6 q
返回字符串str的位置pos起len个字符mysql> select substring('quadratically',5,6);
" A P5 R6 Y% e5 v -> 'ratica' . j0 W) t* K! P
4 [/ r! X& x7 M2 msubstring(str,pos) , a6 B" H9 y0 V- s" _+ S
substring(str from pos)
; L8 Q! s3 D9 F& a% w返回字符串str的位置pos起的一个子串 * z* y6 ]/ H3 h/ I
mysql> select substring('quadratically',5);
6 Y+ Z$ e6 g5 P+ r4 T! J -> 'ratically' ( X2 I' M- J e! f2 Q
mysql> select substring('foobarbar' from 4); / h. b$ M7 t% h8 R+ W
-> 'barbar' , j4 `$ |+ R8 g# \0 e
2 g0 S; w0 _" i4 g6 msubstring_index(str,delim,count) 2 P1 B8 e8 e) D2 R; l/ [: L" `; I
返回从字符串str的第count个出现的分隔符delim之后的子串" G" w: h, }4 p! d; S# L8 f9 {
(count为正数时返回左端,否则返回右端子串)
' n$ P; g3 e7 fmysql> select substring_index('www.mysql.com', '.', 2); 2 i" B, i. M0 C' A7 M5 ~
-> 'www.mysql' - U: @3 m. O! N( N5 y8 v9 u
mysql> select substring_index('www.mysql.com', '.', -2); # k3 G9 b0 y4 ~# v2 c
-> 'mysql.com'
0 _! d0 v7 d9 d4 V
$ i' P( {3 K$ H5 R/ fltrim(str) , @2 I3 Y8 I/ K6 [9 x
返回删除了左空格的字符串str 1 E1 m) I! m! a! g2 ~- c7 X
mysql> select ltrim(' barbar');
; T' D% h9 h) B( ` -> 'barbar'
N* H( R: Y0 v& ~* e
R" H: i* }' p+ prtrim(str) 6 ]+ h4 P$ `) C7 \0 b% S [
返回删除了右空格的字符串str
: f7 d/ ?9 Q% C! P" A) C, vmysql> select rtrim('barbar ');
; y8 L' d5 c3 @0 C( K -> 'barbar' 3 k3 e$ ?( p$ m9 i7 }$ }% @
* Y( h( I0 r$ ~. g3 f7 h- Vtrim([[both | leading | trailing] [remstr] from] str)
- w. w( M" X! }% }/ E* V返回前缀或后缀remstr被删除了的字符串str(位置参数默认both,remstr默认值为空格) 5 {; s. Q4 m( I, \* r! {( V' Y/ ^
mysql> select trim(' bar ');
4 j4 r. N. W& Z0 [( D& G9 U -> 'bar'
4 y P+ P0 D/ N3 }mysql> select trim(leading 'x' from 'xxxbarxxx'); 6 l5 s. H4 d2 y4 A s
-> 'barxxx' - z2 X6 F3 k9 M% G; e
mysql> select trim(both 'x' from 'xxxbarxxx');
5 x. j9 p) c4 f( g9 m -> 'bar'
) x. B& h# S: \7 y: u3 tmysql> select trim(trailing 'xyz' from 'barxxyz');
, E1 X! V3 J0 z* \8 @1 t& o9 H -> 'barx' 5 Z3 P) K" b) r. e. n8 U' V# S
3 J4 J# U5 W# P. ysoundex(str) 4 P6 c: w9 |8 z0 e. f' j+ i
返回str的一个同音字符串(听起来“大致相同”字符串有相同的 {6 U% v5 T6 }
同音字符串,非数字字母字符被忽略,在a-z外的字母被当作元音)
- w8 i# ]: d9 Dmysql> select soundex('hello'); 8 c" S. p- W' e$ X" S% y6 h( ?
-> 'h400'
9 N, ?: U; j! Pmysql> select soundex('quadratically'); # i1 j* J; @; m. V8 K4 `
-> 'q36324'
# m3 [. H+ T" M4 d, G0 ?
( c# y8 I" Z1 u' e2 Wspace(n)
9 }) g9 B' g/ F- S. a6 W+ t返回由n个空格字符组成的一个字符串
+ t. [3 U/ m) [* F. Imysql> select space(6); ( `, h$ A( J3 m
-> ' '
/ W; ]# P- g/ _* v' }, a% t
' d6 ?# L6 f. p ?% sreplace(str,from_str,to_str) 3 H% a1 h9 T7 t( O$ A; ?
用字符串to_str替换字符串str中的子串from_str并返回 7 q. U9 d0 T R$ l- T
mysql> select replace('www.mysql.com', 'w', 'ww');
6 l$ i2 F- N0 `1 u" A, ? -> 'wwwwww.mysql.com'
_6 r, v7 h. d& |$ Y2 p1 F/ h
8 b% ~* t0 y4 r0 W( `repeat(str,count) ! t$ I6 U- q$ t7 |' v# s% g' \
返回由count个字符串str连成的一个字符串(任何参数为null时
/ L. s: `6 H. s2 ~返回null,count<=0时返回一个空字符串)
: q% H; B, m5 b7 q6 Nmysql> select repeat('mysql', 3);
' t5 ?! X& u9 N# \ -> 'mysqlmysqlmysql'
8 P; m j3 ]6 j$ E
" o2 u# d* [6 g" lreverse(str) % I. L" o' H% F! G
颠倒字符串str的字符顺序并返回
" p3 t) O$ J: T; `, f3 zmysql> select reverse('abc');
9 y+ o" R P$ h" ? -> 'cba'
' \3 }& R# b, M5 f3 y + H+ c- K2 T. E1 |( g
insert(str,pos,len,newstr)
7 W' r$ b- z( j4 f把字符串str由位置pos起len个字符长的子串替换为字符串" x' t* m5 E( z7 d3 g: M2 W% a
newstr并返回 * Y/ T- y& n/ d; E: S3 e q
mysql> select insert('quadratic', 3, 4, 'what'); - X- B, H2 g% h1 [& Q! C
-> 'quwhattic'
' y+ ^7 ?; ?! V& E( q: g# E! {" Y a2 B! @" k' t- l7 N0 e9 {
elt(n,str1,str2,str3,...) 4 e+ H( e! }0 q9 Z3 Z; Q
返回第n个字符串(n小于1或大于参数个数返回null) 6 N6 ~0 _ ^5 [/ P% e9 ~" B, ]
mysql> select elt(1, 'ej', 'heja', 'hej', 'foo'); 8 @- h% ]9 U9 p$ ` L ?4 [3 U, m
-> 'ej'
4 y- H( t9 _5 |, d9 jmysql> select elt(4, 'ej', 'heja', 'hej', 'foo'); ) \7 [1 b" @6 k( [
-> 'foo' / o* ]; I1 J- g
# v' G7 m2 \1 F8 Q& J
field(str,str1,str2,str3,...) % R) j% v; v: o! W i0 Y
返回str等于其后的第n个字符串的序号(如果str没找到返回0) 9 b# L M# U/ x; S8 C2 D1 ]& h5 M
mysql> select field('ej', 'hej', 'ej', 'heja', 'hej',
0 A- l, f3 p$ N2 t'foo'); / w- F5 O6 U: I' M% r
-> 2
$ t- J3 D ~6 I: ]8 _mysql> select field('fo', 'hej', 'ej', 'heja', 'hej',% a/ J7 t Y7 M+ Q4 k) h$ t
'foo'); & F+ g1 O0 S$ Q3 _: Y5 J. A" z8 W
-> 0
( U" l; j% R) a- I1 k" c. L
P$ `0 t3 m. I6 T4 Q, V) y+ i1 [find_in_set(str,strlist) # o$ e4 @' G. M- q
返回str在字符串集strlist中的序号(任何参数是null则返回7 N, O+ X6 ]( ]& O
null,如果str没找到返回0,参数1包含","时工作异常)
, B, i( S L! n8 D0 z/ gmysql> select find_in_set('b','a,b,c,d'); " a: \+ ]3 u3 p" U
-> 2
* ^* k1 j& z4 Z/ L + Y' c( T+ _) P7 V9 {3 ?
make_set(bits,str1,str2,...)
& w3 w! E/ `- x* S把参数1的数字转为二进制,假如某个位置的二进制位等于1,对应
n+ O3 T, Y: p! R位置的字串选入字串集并返回(null串不添加到结果中) & k3 p& r( ^! t& F3 ^% b8 Y
mysql> select make_set(1,'a','b','c'); % e* [9 d3 a4 K& H* _
-> 'a' 5 N6 e: L. R" Q' {4 a' B, K5 }
mysql> select make_set(1 | 4,'hello','nice','world'); & S, e- z' p! E% T, s! x9 D% e) e
-> 'hello,world' 4 X) T. A- F9 A9 b/ e8 ~7 r2 T3 R- ~
mysql> select make_set(0,'a','b','c');
1 z# ~: }9 s7 {. P e% J& p -> '' - K D! V6 E/ J; i
2 _5 ~; d' c6 U( a
export_set(bits,on,off,[separator,[number_of_bits]]) 9 w4 m5 ^/ F1 f% w% P7 n6 w4 D5 Y
按bits排列字符串集,只有当位等于1时插入字串on,否则插入) K" P7 C! e& g, h
off(separator默认值",",number_of_bits参数使用时长度不足补0
. N9 j2 v9 ?3 {, _, i而过长截断)
& c' R& o# \: m8 B/ r" w' u" y, L2 e( nmysql> select export_set(5,'y','n',',',4) 1 k! y3 ~# I) j9 ~0 V; o0 B
-> y,n,y,n
: U9 Z$ j3 [" h1 o" ^ 7 [/ E; }2 A3 x
lcase(str)
% h" k. T, @; x. ?lower(str) . s: e8 u+ i$ k) r& V- I: `/ d- g- A
返回小写的字符串str 1 [1 w2 B9 v, b& T; ]1 r0 v
mysql> select lcase('quadratically');
% s! K5 P' `" b( y -> 'quadratically'
' N( R& x1 N3 u# @ - ^/ s- B" }$ E& A. G- c5 n
ucase(str) 8 F- k- u1 i# m% D
upper(str) . i8 |, ?% A# R5 r2 ~9 I
返回大写的字符串str
' {9 N1 h4 ~8 n s9 s' Amysql> select ucase('quadratically');
7 [2 z- k( g* W6 o% w -> 'quadratically' % f, @, ~) W4 N- j5 ?6 o, H
6 U/ K+ B! B0 e/ b' v+ Kload_file(file_name)
4 q. I" s ~+ m; z8 Z( n. @4 l9 i% F读入文件并且作为一个字符串返回文件内容(文件无法找到,路径1 `* ]6 P3 l, n7 b9 q
不完整,没有权限,长度大于max_allowed_packet会返回null) 8 X# J9 u- T2 }8 ~& b
mysql> update table_name set blob_column=load_file: E1 P4 s3 |% _% n
("/tmp/picture") where id=1;
/ ^" v9 h! Y5 Q1 M5 P) v% L
2 ?% y f0 I9 r P7 E/ y b( p2、数学函数8 R* x0 L& O0 J# Z
abs(n)
) D! g" @1 d! P* s4 B6 X4 G3 g5 |2 H! L返回n的绝对值 3 b6 l2 ^4 ^8 N8 U8 P
mysql> select abs(2); 7 |0 J5 S% q1 o! ?
-> 2 / b H" \5 O! ^9 T/ {; ]
mysql> select abs(-32);
% Q' N: \$ ?3 M) ^ -> 32 $ S; b, c2 J/ \; g0 C
3 P6 ], o5 N- ?
sign(n) $ O! H; S. Z" Z/ r( {
返回参数的符号(为-1、0或1)
" O% U1 Z; ^+ E$ ]mysql> select sign(-32); # U3 }5 `% ?; a; E2 k
-> -1
* U' v- ?, Y& ^# L' M4 G0 `+ Zmysql> select sign(0);
4 H! W' r) r% A: x; ?! _( r -> 0 / f/ q* t2 Y4 |/ A
mysql> select sign(234);
5 E3 R# t) J0 V9 V -> 1 3 x! h' r6 c8 Z) {: S
; n9 }' X0 M) }8 G8 x& Y' r; Cmod(n,m)
) l6 T! M, P( y2 _9 L7 m取模运算,返回n被m除的余数(同%操作符) 9 U% u- ~7 g9 k: g+ N: B
mysql> select mod(234, 10);
5 v: k3 t' G0 ]5 X9 x; W- ` -> 4 4 s9 B1 p8 }) ?! Z8 T
mysql> select 234 % 10;
9 z6 N+ ?- i( |" s2 f0 p7 G0 g -> 4 8 `8 j4 w9 o8 w% ?8 Z7 T
mysql> select mod(29,9);
\: J `3 r2 Z' y: d -> 2
- p, e& e; K0 u# q1 e/ Y8 m1 b8 l 6 G5 R$ [' u1 B8 k- ]8 v. S5 B3 e5 C2 e
floor(n) ) V" H# Y4 g6 G
返回不大于n的最大整数值
/ ]2 x# P3 q! u% _$ ^' Umysql> select floor(1.23); 4 Z7 `2 ~- W8 e5 ^$ ?
-> 1 * H( |9 u+ I# ~. O, M; ?
mysql> select floor(-1.23);
- ?+ E, m% _. A2 I/ Z# S -> -2
9 }0 r: Q" [8 B: q/ v3 L
/ D3 k, K" O% y+ Jceiling(n) 6 b) z; N/ B8 O; g/ P6 M8 P7 V
返回不小于n的最小整数值 2 {1 s: @$ @" X' ^4 @
mysql> select ceiling(1.23);
5 k+ c& u3 P9 N4 {$ G6 F3 P! ` -> 2
3 p$ Y( B9 Z) Y8 a% Omysql> select ceiling(-1.23); * |6 ^! i0 Z$ h4 _+ Q+ E
-> -1 / ?& }0 D: Q/ G
7 F+ x4 {( L; [& a7 q, I( c1 j
round(n,d)
# X$ v. t, [' t返回n的四舍五入值,保留d位小数(d的默认值为0)
/ N* [2 Q; {% L2 q) Vmysql> select round(-1.23); - N& w3 u% @6 }& D* Y
-> -1 2 l" i* \6 z) }6 A/ r- v
mysql> select round(-1.58);
0 H6 H8 m2 B+ J* f8 X* C( F v: ^ -> -2 + b) w) p' z: q+ A% s# j
mysql> select round(1.58); 3 X# P: a6 c' W, ?" P1 E' h
-> 2
0 s1 }3 W" E/ s0 k+ Z" J, _mysql> select round(1.298, 1); 6 [/ v+ H& J4 M+ E
-> 1.3 * A) N7 }! I5 C
mysql> select round(1.298, 0);
6 }8 J1 `% g, b% z! } -> 1 r3 {7 T- f3 w- f, S
) c V$ X% D( t- ?+ \. w3 _8 ^exp(n) U P' i8 H, t" s! j0 S6 K' [
返回值e的n次方(自然对数的底)
; H* y' @( h) e0 E; fmysql> select exp(2); " k+ D. g) v* \. M) ]
-> 7.389056
7 Q$ @' m. F* E5 H% H6 R( f. _: q; Smysql> select exp(-2);
: S! ~+ k0 r+ Y5 l# O -> 0.135335 ) ~& _7 R& v# N8 R
) ~7 E, S% |; ^) c& J: [
log(n) V5 _% s6 s" l4 R/ I7 X3 c
返回n的自然对数
7 @+ e# o' i* r0 W ymysql> select log(2);
( f O1 {- j6 W4 {$ j -> 0.693147
6 V9 I; S! B5 e" F) Qmysql> select log(-2); ) @" z& s v. m/ p4 b5 Z
-> null
& x% |; \% Y6 _/ |7 Z
/ ]2 Z5 [! i" v. i5 flog10(n) 2 A1 A! h* P5 a$ R
返回n以10为底的对数 , l2 ~1 A- T/ i6 A
mysql> select log10(2);
$ |8 U0 e7 I9 i4 a1 T6 X% L -> 0.301030 7 D6 s$ v5 j* r/ O& D
mysql> select log10(100);
3 ^" W- f+ n9 f: e% Y' _ -> 2.000000 & W. m4 E$ z2 C; z. G) E
mysql> select log10(-100);
$ g/ S1 a$ d0 a! D* e; @8 R) N -> null 3 M+ ]2 _; m6 p/ }4 h
" J0 P. {+ n1 P% {( f8 f: S
pow(x,y)
9 B% G1 g8 p% ^5 |' h0 jpower(x,y)
1 G# X6 D7 B9 N& P4 \ 返回值x的y次幂
, Y7 g: [+ ]6 gmysql> select pow(2,2);
3 S. ^1 U/ Z7 D$ n5 Y -> 4.000000 9 a! K* A' y J, C" `* u6 u
mysql> select pow(2,-2);
% D" ?* e5 e$ I5 C( ^ -> 0.250000 , _: Y% t" M, ]. \ ^) V. v
% P4 ]: g( I4 w' t6 `# |sqrt(n)
: r& z. l4 M O4 D' V 返回非负数n的平方根
4 U9 S$ o$ Q' emysql> select sqrt(4); ( A4 r5 I6 r/ f
-> 2.000000 " q, x7 ~* a4 \! |9 i
mysql> select sqrt(20);
! F4 O1 F5 B: S' t- V: j -> 4.472136 ; E( u& L0 ^) h! y
5 D( L$ ~4 q' F& Dpi() * q2 \0 o5 R. [) F" N: f
返回圆周率
# r: u0 ]& ?% l* l" h; M; P' mmysql> select pi(); ; R0 G& J/ o) ]
-> 3.141593
9 A( n! O# @9 W* o# u7 W- k/ h / U T/ y2 @5 n W
cos(n)
1 @: }' V; _0 k+ s2 p 返回n的余弦值 ; q( d4 ~: Q9 t% ]+ t
mysql> select cos(pi());
! m& G+ e0 D, f -> -1.000000 ' X3 ^' I- n8 t' J) V+ Q
) q2 T1 i% c( L* M0 v$ e4 Ksin(n)
( z4 H9 Q* J6 c& i2 y 返回n的正弦值
' s7 b' a1 \; y; omysql> select sin(pi()); 6 \' J6 E7 g0 P! ^- F7 }+ k
-> 0.000000 d9 e0 W- p) U
# z: o4 _, N9 X* o( x' Ktan(n) : Y6 G. q2 L) L C4 h! K0 P
返回n的正切值 & D y) q6 V' j* E) A U; }
mysql> select tan(pi()+1); ) P5 R* @% X: _7 `$ S
-> 1.557408
! J" K+ \) c* D+ X # A' B O5 i% C3 g# g7 z& }
acos(n) & D! o2 A- }7 k e; p
返回n反余弦(n是余弦值,在-1到1的范围,否则返回null)
) X+ A9 x' z1 y# ~: z3 n* ^6 Fmysql> select acos(1);
! A( Q$ l* A9 R' k: f# G -> 0.000000
7 N1 j7 g7 d0 v6 Y4 w- Tmysql> select acos(1.0001);
, V# M* L. b) o5 j7 L4 G -> null 0 W4 y, a( c9 _3 j
mysql> select acos(0); 8 x. V8 }" z! C5 f. K2 J: X& |: O" O
-> 1.570796
: O8 @) u3 D3 O8 z' e2 m! k3 w # ?7 g' q. m. S' j/ |& X
asin(n)
& V9 G* t0 f7 t8 m$ u返回n反正弦值
: U; y; S# M Q w6 d8 Fmysql> select asin(0.2); $ v" h2 e: l: D# _, e! @
-> 0.201358
1 I, d- D: l6 g, K7 f( o0 Rmysql> select asin('foo');
\. Y3 | w" Q -> 0.000000 ) y+ A6 [- [, h2 @7 [) Q9 f
' t0 \5 f3 l5 a/ ^5 a; b9 ~/ ~
atan(n) 8 O. H: Y0 n/ g: ?0 [1 |
返回n的反正切值
# O: }3 l% w4 n: m Kmysql> select atan(2); 7 `' O2 x1 I; Q% x1 B1 `% N K
-> 1.107149
) | G* r, r* Y: }: u- N H* Emysql> select atan(-2);
, l0 C& z6 Q7 O -> -1.107149
* r3 a" m+ b4 N# k' ^atan2(x,y) n( k1 n% ]% C4 C
返回2个变量x和y的反正切(类似y/x的反正切,符号决定象限) * x" p! t; c/ Z7 n* ?( V k# J
mysql> select atan(-2,2); 0 }* Z# l o, Z; [! ^
-> -0.785398
; U, Z5 t' A7 t" Y* p: Nmysql> select atan(pi(),0); $ Z7 T, `9 O1 P Q K9 v4 W
-> 1.570796 8 F/ \* ~6 ?5 b2 {9 S6 X. ^
( W! }6 G+ A' z/ C' t6 vcot(n) 6 E9 L7 [7 ~, T; M4 H# c' c
返回x的余切 . e2 x; B: d( G+ P6 k: y7 B" |. `3 U
mysql> select cot(12);
! W9 X g( q3 y" E" D$ ?0 B" ? -> -1.57267341
: }& p; M0 p0 S( T- W! V wmysql> select cot(0);
$ f3 z: S b6 u -> null
& h' M) T3 |- {' d7 M
# |& C0 f- ^/ c; h4 Lrand() 7 v* ~; J* ]( E; m* w% A# Q$ x
rand(n)
. f7 Y' A9 @8 }8 W返回在范围0到1.0内的随机浮点值(可以使用数字n作为初始值) * c. F3 d# M! [/ a3 C
; y+ H$ B7 }$ I3 u: Qmysql> select rand(); ! {$ a* b% L0 F5 `' j" x% q
-> 0.5925 ( s& v# P) x( E. a" ~& H
mysql> select rand(20); ( u! p$ ^+ t K a" H
-> 0.1811
6 R3 N) ~, C/ L- Q Amysql> select rand(20); 4 i& F1 I" m( X ^3 C! I
-> 0.1811
9 ^! j2 ^8 n9 J4 B# c. imysql> select rand();
8 y! L, m* P7 f -> 0.2079
6 A3 j9 x' T% G) Lmysql> select rand();
0 S& X: u( \: s `. Z _% D0 F -> 0.7888 * M; n/ J/ { j7 a( E7 j
, z( y4 v8 J6 _# y' H, n
degrees(n) ) `( e$ Z5 x% w
把n从弧度变换为角度并返回
! ?1 X$ g; d; O* }mysql> select degrees(pi()); / z4 n- E2 z1 `+ A+ o
-> 180.000000
- u3 ~7 @6 m6 R+ W2 D; D0 I4 x: g # g. L5 g6 O7 H) |# i) B2 @
radians(n) ! A; B& P; q5 R& i% Z$ l8 o
把n从角度变换为弧度并返回 ! R# h; L$ Y1 K" O9 v
mysql> select radians(90);
3 Z( U1 C% w V( ^; H -> 1.570796
8 U" E4 d3 K" z" d: f
$ W& T8 G3 N0 |& Z d3 K7 `) b Etruncate(n,d)
8 Y! `6 h9 k- q- U9 }保留数字n的d位小数并返回 & s! ?8 H9 K: x" q9 Q" S
mysql> select truncate(1.223,1);
# k1 y+ ^1 c' y* U- U -> 1.2
5 C3 J- q$ f: Z! tmysql> select truncate(1.999,1); : Y0 @, k: l# P) E. C0 g a
-> 1.9
7 i+ ~# s/ F7 F) I$ a; r7 _/ X2 pmysql> select truncate(1.999,0);
( I# c* T. u% L, B. m -> 1 * Y- @* L8 y* r Q, l6 v
1 C1 G4 x0 p/ _: V2 q/ _& ^least(x,y,...)
, ^( ]: k7 n3 L4 B返回最小值(如果返回值被用在整数(实数或大小敏感字串)上下文或所有参数都是整数(实数或大小敏感字串)则他们作为整数(实数或大小敏感字串)比较,否则按忽略大小写的字符串被比较) . R6 S: q q2 y5 u& J) p4 o, z/ x
mysql> select least(2,0); 0 x: K6 M. A0 ?. z' B. U
-> 0 / T6 I( U7 c7 D' z
mysql> select least(34.0,3.0,5.0,767.0);
4 Y6 B! |; P& F8 S4 v. K9 H -> 3.0 8 t9 M* J1 Q3 y8 j5 b- o$ y
mysql> select least("b","a","c"); ; o/ L* N) M7 {/ B
-> "a"
8 u' k! |, Z* W: B {0 X % P/ F1 g3 e2 \4 n8 O" c* U8 z
greatest(x,y,...)
2 ]. q1 I5 K/ f& l) t返回最大值(其余同least())
3 z& C% w. ^, T7 K$ {2 Mmysql> select greatest(2,0); ) b" C7 h2 |9 L$ \ `- l& L2 @
-> 2
0 n/ W7 t) P( Omysql> select greatest(34.0,3.0,5.0,767.0); ! q) d- H$ `- r$ j; T& l* y
-> 767.0 " Z, H% k4 G! `+ }
mysql> select greatest("b","a","c");
# o1 T L& k i -> "c" z( [4 ^( g E3 F. O- r6 K' E @
' q L5 y a6 V; ]* q8 s
3、时期时间函数
$ R2 y# O& z$ s% a* x$ ndayofweek(date)
: d( m4 a. Z1 F6 _5 \返回日期date是星期几(1=星期天,2=星期一,……7=星期六,odbc标准)
% }- O" u3 l& G1 ?" l: Zmysql> select dayofweek('1998-02-03');
: A. z1 _9 Z q -> 3 8 J' Y2 }" W7 R
& _) i1 `3 m7 c7 n% O( T
weekday(date) . V7 Y' m. N- a1 [
返回日期date是星期几(0=星期一,1=星期二,……6= 星期天)。 7 d4 V8 J0 o, f8 l. ?2 a! c
; v. b' o9 \& d
mysql> select weekday('1997-10-04 22:23:00'); ( @* h4 ]! |+ f5 a
-> 5 & x5 P( V- ^/ B7 ^
mysql> select weekday('1997-11-05'); 8 }4 {+ q- h9 A& K" t1 `
-> 2 * G5 S- E- K) ]) K: w
; Z# D% X) c6 V8 Z* bdayofmonth(date) : [& T! b9 ^5 j! P. d7 b/ |2 u& i
返回date是一月中的第几日(在1到31范围内) 8 {/ T- A7 p- q3 P( ^; ~3 K
mysql> select dayofmonth('1998-02-03');
. H. g6 f7 l2 G$ G$ E -> 3 : {" k. X+ U1 a+ b7 ^
2 F) ], |* \. B) u* zdayofyear(date) $ f: t0 I" E3 b0 x0 ~0 V
返回date是一年中的第几日(在1到366范围内)
2 {5 E; r, y9 C, M$ { imysql> select dayofyear('1998-02-03'); ! D. ]6 c8 D. k3 g: t; C( |2 s
-> 34 8 l V7 @2 ?! W' X2 P f
& D, _# }1 ~) z! k9 N3 Vmonth(date) % O5 m- t% c! K
返回date中的月份数值
; y! i" N( F, a( p" ^mysql> select month('1998-02-03');
9 r/ ]+ b7 H. I) x: B- k -> 2
, q7 G& [& m8 T9 {" I, n % @: J% z; H& I3 k1 F7 c
dayname(date) / d; y+ u9 C4 ~
返回date是星期几(按英文名返回) 9 ~8 y B0 a- [% G2 `& y# ]
mysql> select dayname("1998-02-05"); 8 b+ C4 m- q& a; |1 m9 I
-> 'thursday' 2 K! e& Y4 k5 I7 |, }
0 \# ^6 {% h. [- Mmonthname(date) * I G% s7 ^: p: G
返回date是几月(按英文名返回) + t9 [! E. J' q% F2 L
mysql> select monthname("1998-02-05"); 1 i3 K8 G# t: U2 v4 c2 E
-> 'february'
; h5 X! A0 o" o* l
. B" W% _0 `3 O" hquarter(date)
6 }( S" x! y& R$ i! T返回date是一年的第几个季度 + E: s y! W2 }1 F& v1 Q
mysql> select quarter('98-04-01'); + q% F8 j3 B- ]4 V8 E9 _& _# N+ g
-> 2 2 L& v8 J5 f9 a8 n7 \$ \0 @$ z% }' @
7 n' @5 o3 ]+ Q' \ V% U# `: n
week(date,first)
9 B0 K1 t- N6 c) S) F& V7 c' `4 `返回date是一年的第几周(first默认值0,first取值1表示周一是
; _2 U# @9 {# j- T周的开始,0从周日开始) ) Z! w7 k* A* Y- H& p3 e/ h* d
mysql> select week('1998-02-20'); # l- w# C6 o/ l
-> 7 8 R6 @" L& _7 @0 `. ?& [' p9 I7 Q6 G
mysql> select week('1998-02-20',0); - w8 x% d- o# A
-> 7
1 k2 ^5 \, S2 B- J' q: omysql> select week('1998-02-20',1); V+ G4 {: H3 S! R1 |$ X! h
-> 8
4 m* W+ g( x0 n # m0 j. f; g& l6 g5 n9 k
year(date) 9 w- {' O$ {. A( z* Q, ^8 J
返回date的年份(范围在1000到9999)
2 k! K8 D0 C+ Y6 tmysql> select year('98-02-03');
; }7 l3 f0 _8 N9 T) P -> 1998
B; C1 d9 M6 ^; h4 b F9 T7 t
7 Y' a$ I# ^, v# R4 r3 n1 s, B0 Ehour(time) & J# D% U4 k2 p
返回time的小时数(范围是0到23)
, s1 x0 l+ X5 J0 h2 Wmysql> select hour('10:05:03'); " v/ |3 Y" a. Q- m1 }( k q
-> 10
0 t3 S7 v7 u* V' c
2 B- { e/ {% C! kminute(time)
. U8 d' W) ^; F% O) u4 n返回time的分钟数(范围是0到59)
0 J$ L& c; w: [7 \" T% kmysql> select minute('98-02-03 10:05:03');
3 \1 Q6 k0 v/ ]+ _. @* _6 _ -> 5
q4 o" p7 Z& a1 q6 c
4 z2 v3 Z& e$ a( ?* g+ Ssecond(time) 0 Q x3 g$ Z9 [$ r5 q* J- g4 z, E( a
返回time的秒数(范围是0到59)
2 A3 T0 G# w& E4 f! x; Hmysql> select second('10:05:03'); 9 A/ |7 n9 W$ M, B
-> 3 ) k* \6 R1 |# S. l% E
( b$ L K5 a- H2 Operiod_add(p,n)
% ^5 w P7 b3 r* {# _4 V+ |! V增加n个月到时期p并返回(p的格式yymm或yyyymm) " d/ X6 Y/ ^+ [( u4 h4 u1 K# z
mysql> select period_add(9801,2); * |6 Q5 [; v0 q& B
-> 199803 + C2 r% D0 G& `' s5 H
; h, F3 m9 B3 h( g5 c# R
period_diff(p1,p2)
. k( Q3 X% | V7 P8 F! ?6 n; T返回在时期p1和p2之间月数(p1和p2的格式yymm或yyyymm)
$ A. t0 [3 E8 z- |! _3 B! gmysql> select period_diff(9802,199703);
4 q/ Q1 }! c% T; N6 e -> 11
, Q2 z$ f6 ]( m, s9 K# E
$ K% \+ F2 T/ C' ~3 e8 s1 D; ^date_add(date,interval expr type)
7 ?6 c( ~! k" r: g* M5 pdate_sub(date,interval expr type) ; q; C! |; K7 E' q* N
adddate(date,interval expr type) ; l+ w) H+ l# ^
subdate(date,interval expr type)
' V( F# o5 M. p1 c- e X+ q/ p8 b对日期时间进行加减法运算 " \% u% G" |' } e! B
(adddate()和subdate()是date_add()和date_sub()的同义词,也" J: a& q, C) f2 S; n( t
可以用运算符+和-而不是函数 ' q: V2 @* P9 ?
date是一个datetime或date值,expr对date进行加减法的一个表
& w" B' w3 _( c4 M, c" R达式字符串type指明表达式expr应该如何被解释 , F. J. [$ a, [6 e( a( r
[type值 含义 期望的expr格式]: 1 b2 S# a6 O3 E' A2 D- W: Q
second 秒 seconds 3 s/ G) F- d# N) x. G3 w+ _
minute 分钟 minutes
! A7 q6 F4 B4 V8 S% a M hour 时间 hours
. m" `8 g+ @& g A day 天 days ( b! E; b. n1 }! S7 E) M
month 月 months
8 x3 o8 y. }6 I1 v year 年 years
# w5 e) `% x& p# e8 X minute_second 分钟和秒 "minutes:seconds" 1 r: Y: C3 k1 P8 P
hour_minute 小时和分钟 "hours:minutes"
# C, b' F- k/ _8 C7 h1 D6 r7 v day_hour 天和小时 "days hours"
c: x- }0 L. [& w) t* Y9 Y+ |! ~$ v year_month 年和月 "years-months"
4 r1 \! s- X8 ~5 E: y2 | hour_second 小时, 分钟, "hours:minutes:seconds" : |' M% n; j5 o& i
day_minute 天, 小时, 分钟 "days hours:minutes"
2 m1 i0 a% e# F1 F6 O& S day_second 天, 小时, 分钟, 秒 "days& t( j3 L! M; R3 x$ c1 T2 l
hours:minutes:seconds" 9 u9 c) m$ h7 }! z2 U# x
expr中允许任何标点做分隔符,如果所有是date值时结果是一个
J4 M m: K8 Ndate值,否则结果是一个datetime值)
+ K2 x8 {' e& K1 ^ 如果type关键词不完整,则mysql从右端取值,day_second因为缺2 q% ^0 A! [3 _3 @& r% Z% ?
少小时分钟等于minute_second) " E6 O6 i6 D; I& Y
如果增加month、year_month或year,天数大于结果月份的最大天
0 u1 g3 _( E$ V$ h" r$ I" K数则使用最大天数) - N9 E$ M/ D+ Z7 X3 R% t' u
mysql> select "1997-12-31 23:59:59" + interval 1 second; " \# \$ h9 N+ F
: B6 G+ N9 j% w6 }6 U -> 1998-01-01 00:00:00 - t* ~6 a* |9 i8 l. O! M: P& O
mysql> select interval 1 day + "1997-12-31"; , I y$ ^5 P% `
-> 1998-01-01 / W" _. s5 w5 Z8 {: l
mysql> select "1998-01-01" - interval 1 second;
) t+ v' q4 K9 A! t/ C+ N -> 1997-12-31 23:59:59
; a- y @ {7 U; Pmysql> select date_add("1997-12-31 23:59:59",interval 1
3 _' h- B4 _+ T) w$ f7 h$ P3 y$ |second);
- ^4 y1 }3 z% N1 Q; U. D -> 1998-01-01 00:00:00 $ a- S2 K6 F, I6 F1 ]8 L$ q. r
mysql> select date_add("1997-12-31 23:59:59",interval 1
# `" L) Z" g& ~' _5 E1 pday); 9 v! K: U9 v" ^7 W/ A# v. C
-> 1998-01-01 23:59:59 , \5 e) ?. p3 |# z& R
mysql> select date_add("1997-12-31 23:59:59",interval9 h7 b1 |- Y- [2 X( v% o
"1:1" minute_second); 0 Y9 N8 h& N* P5 A
-> 1998-01-01 00:01:00 ' D5 {( O. T1 u, p! H
mysql> select date_sub("1998-01-01 00:00:00",interval "1) }0 [( T1 v4 t' U: z7 n/ ]5 e
1:1:1" day_second);
) P3 M* Z* N/ X+ ]0 B ` -> 1997-12-30 22:58:59 $ D1 }% E- b" W
mysql> select date_add("1998-01-01 00:00:00", interval "-1$ I2 c# Q. N9 E# l
10" day_hour); % I+ a. x* V% y. Q- ~* F r
-> 1997-12-30 14:00:00
7 |' m9 o3 A0 X, ^) X. o5 ~" zmysql> select date_sub("1998-01-02", interval 31 day); 5 u- h: L S8 V- Q
-> 1997-12-02 7 _: O& W4 i1 H
mysql> select extract(year from "1999-07-02"); $ E1 Q* }7 t6 t+ r/ s
-> 1999 1 W% B' X# v" @; Q$ f# b
mysql> select extract(year_month from "1999-07-02
4 p" \, ~1 K. g8 [6 A01:02:03");
3 M ?) t* f8 q& [! |, J* C9 Y -> 199907
6 O) O4 R% u; c9 hmysql> select extract(day_minute from "1999-07-024 _0 E6 `6 C3 l5 [9 p
01:02:03");
, F3 ~! Q& {. Q6 t- T9 y -> 20102 7 L q6 a# U; S( _+ f! L' c8 ?
/ s. s2 b; U" [to_days(date)
$ Y) B; u7 F& m- E4 C0 t1 \) h; x返回日期date是西元0年至今多少天(不计算1582年以前) ' |- H/ e4 g* ?1 j
mysql> select to_days(950501); - O, Y U& s( ]$ i( M F
-> 728779
6 V7 W9 X+ ^& r; c- Zmysql> select to_days('1997-10-07');
( e2 f0 m3 F$ z, a- e -> 729669
9 D8 A# L$ b% ]3 @, v ) U- A2 _$ ^! T+ d7 h
from_days(n) : C9 R; R0 y4 |& o) _
给出西元0年至今多少天返回date值(不计算1582年以前)
6 ^# P9 i. \" m4 e* V: umysql> select from_days(729669);
4 F4 w6 n5 _) X% J% {* V D# x3 Z -> '1997-10-07' ! z) ]* s7 A" l; h2 U# W' `6 v0 N
( h8 |+ L8 l, _
date_format(date,format)
% L7 ?; F1 ^ w8 d; Q 根据format字符串格式化date值 - |( x/ N$ I# P, O! O4 l% m" A
(在format字符串中可用标志符:
2 B' t% k: q9 t% D2 ~+ \1 q L %m 月名字(january……december) + G" |; {9 C( f' Z# x
%w 星期名字(sunday……saturday) / P2 a- [% Q& V' P
%d 有英语前缀的月份的日期(1st, 2nd, 3rd, 等等。) ! n$ t5 d' E8 B5 W0 g
%y 年, 数字, 4 位 / J4 N2 U) H: a* m- l5 E
%y 年, 数字, 2 位 * d: _) Z# Q" d6 U
%a 缩写的星期名字(sun……sat) , Z L2 a8 x* H9 U" U# H
%d 月份中的天数, 数字(00……31) % ~+ a6 O# p! V$ S+ {
%e 月份中的天数, 数字(0……31) : V. {1 M2 `% O. `4 f, S
%m 月, 数字(01……12)
- W8 i8 s6 r! t Z! Z5 J %c 月, 数字(1……12)
) p0 {( D! B" I8 z3 a( h8 G& ` %b 缩写的月份名字(jan……dec) ' ?+ S3 s7 N! R
%j 一年中的天数(001……366)
; E* b9 Y9 d0 W( G( C %h 小时(00……23) 1 \) d! T: @9 h$ p, }% u2 |
%k 小时(0……23)
7 r8 l+ n1 s: N% S3 Z& R& ~ %h 小时(01……12) 7 x1 p# W: P4 l( p- [
%i 小时(01……12) 3 P( |2 G2 t6 F& [" y
%l 小时(1……12) , L+ O; A, {" T& z# e5 |
%i 分钟, 数字(00……59) / @% J3 d' V5 M9 v1 D
%r 时间,12 小时(hh:mm:ss [ap]m) , j* R- J3 D& u, k' B
%t 时间,24 小时(hh:mm:ss)
/ s" T5 a, N$ L9 _3 } %s 秒(00……59) 8 b7 A; e- s' Z' k6 q- U% J
%s 秒(00……59) % H) {+ J& V q% `0 n: Q% V
%p am或pm
9 f8 O/ q7 M/ J! n9 A %w 一个星期中的天数(0=sunday ……6=saturday ) # b5 h; x& E6 R7 r
%u 星期(0……52), 这里星期天是星期的第一天 ) X+ e l# I5 a( {, U9 F* @
%u 星期(0……52), 这里星期一是星期的第一天 3 n! P0 x4 x7 c4 b. G8 O
%% 字符% )
. t( X4 `) D9 Mmysql> select date_format('1997-10-04 22:23:00','%w %m %
* B* M# ?9 Y$ z; Qy'); 0 O- s/ }- T4 g' ]% J
-> 'saturday october 1997'
) @ i& v+ M. L/ B1 bmysql> select date_format('1997-10-04 22:23:00','%h:%i:%
' y2 }; {6 N, `$ i3 Y# bs'); 8 H1 }5 o) N3 @& D( u) i
-> '22:23:00'
( `7 q' b& P' A5 [4 H( J Pmysql> select date_format('1997-10-04 22:23:00','%d %y %a- ]/ z8 z' X) z$ O8 i
%d %m %b %j');
7 A4 Y9 K% O7 D: H -> '4th 97 sat 04 10 oct 277'
, N) \2 V+ |7 }/ h0 p' |mysql> select date_format('1997-10-04 22:23:00','%h %k %i
# I, R& \) h* z- ^9 E/ h, p%r %t %s %w');
7 [( c7 ]" c {- [& m0 Y: [1 m -> '22 22 10 10:23:00 pm 22:23:00 00 6' $ j) ]1 Q2 P$ f$ p
: D( S) ~/ |- u6 N
time_format(time,format) $ C0 i5 p2 R5 D0 D) N; e" r2 G$ u( q
和date_format()类似,但time_format只处理小时、分钟和秒(其7 X/ q# n4 h0 h) o6 _, Z& |# j
余符号产生一个null值或0) % e$ Q. ~6 V' @( z
6 r- j4 `6 ^/ \6 L
curdate() , j; f+ i3 B" ^2 Z- I; A
current_date() # X, s+ c: W& L" ^: k% w8 b
以'yyyy-mm-dd'或yyyymmdd格式返回当前日期值(根据返回值所0 C7 m D$ U3 ~4 n& A5 ?( u
处上下文是字符串或数字)
% W4 n: ` }/ Z; L9 [6 ?7 Zmysql> select curdate();
- k4 ]3 }! C& X; D -> '1997-12-15'
S" \( V5 j& L0 G& z" G; w8 umysql> select curdate() + 0; ) R9 H4 F- I, y, q' l$ t
-> 19971215
8 @" i; l i6 K/ v9 f7 `, w, T
6 u I9 L' j# ?8 \; j5 Pcurtime() . F8 \; P) [4 t/ X
current_time()
* x, A7 i( u s! r9 l5 d, B 以'hh:mm:ss'或hhmmss格式返回当前时间值(根据返回值所处上
}% Z9 K5 E% \& L3 z: E, m下文是字符串或数字) 3 i; Y5 l9 c# D% \+ W3 N3 H
mysql> select curtime(); 7 I0 Z. [# v4 c
-> '23:50:26' " ^5 G7 P4 M$ y% i& W4 F/ s$ p
mysql> select curtime() + 0; + m' _2 [9 c( D! y3 B# ?' x
-> 235026
6 E- [+ F& v/ b0 R+ T$ D
7 ?) z! i5 D0 n& v. b e8 |now()
% z# F6 m/ B" T4 W+ osysdate()
0 n: a# d- R6 ^$ x0 N3 i9 fcurrent_timestamp() 5 c" I6 }1 x+ B4 ]0 `
以'yyyy-mm-dd hh:mm:ss'或yyyymmddhhmmss格式返回当前日期
( U J) L, m% W$ {, ~6 {' |时间(根据返回值所处上下文是字符串或数字)
5 C. R9 P5 X. Hmysql> select now();
# G7 N1 X H/ O- I -> '1997-12-15 23:50:26'
7 K% r8 R3 f" K5 a: @& ?mysql> select now() + 0;
# Q& r5 f7 \7 v -> 19971215235026 - Q+ n3 I/ A+ P/ O: f. F
7 n- u& `9 y* |! I! T2 munix_timestamp()
4 h7 L( ?. I% O, sunix_timestamp(date) $ _8 `1 ~' O+ h' ~' Z8 o( ]
返回一个unix时间戳(从'1970-01-01 00:00:00'gmt开始的秒+ N! e3 ]3 j# Y4 c
数,date默认值为当前时间) o0 p4 a3 S6 ?
mysql> select unix_timestamp();
. I! V2 W4 l8 A6 _* q4 c -> 882226357 3 \- M0 a4 c! ~ p, w
mysql> select unix_timestamp('1997-10-04 22:23:00'); 4 l' @2 h+ c0 o# t1 t1 [4 ~
-> 875996580 # {4 Z/ O( K+ b1 S2 O" X( ?
# g! b7 T6 q; i O B1 Q2 B
from_unixtime(unix_timestamp)
' ?" P2 F b# R以'yyyy-mm-dd hh:mm:ss'或yyyymmddhhmmss格式返回时间戳的 g; N7 f3 V y2 N8 Y
值(根据返回值所处上下文是字符串或数字)
* K5 ?: G. e! l# Umysql> select from_unixtime(875996580); 7 _0 x$ r0 k3 [5 R% R$ X
-> '1997-10-04 22:23:00'
7 n- m$ {7 U2 E' q$ lmysql> select from_unixtime(875996580) + 0; 4 |1 j4 Q' S7 g
-> 19971004222300
; ~$ x5 i+ M2 p; N3 d; v2 Q
; z# s6 D7 C- p: [# U* ^from_unixtime(unix_timestamp,format) ( F# I) i' v! }1 x( d6 h
以format字符串格式返回时间戳的值 3 V+ i4 R6 C$ o" s0 @; |
mysql> select from_unixtime(unix_timestamp(),'%y %d %m %
1 D4 N6 p' m. l" Hh:%i:%s %x'); 6 W9 E! D. s8 j$ O% S) V
-> '1997 23rd december 03:43:30 x'
1 E' ]' H9 e K% b8 [ ) h) Z$ B0 L/ P/ k
sec_to_time(seconds) ) O3 z! n8 B4 p& }4 F# |, V
以'hh:mm:ss'或hhmmss格式返回秒数转成的time值(根据返回值所处上下文是字符串或数字)
9 g$ t. D" b: O' w) ?# m/ Dmysql> select sec_to_time(2378); 2 @/ `/ O- E# `8 j. | u
-> '00:39:38' 0 v! Y/ d4 B7 E- m. r4 ^
mysql> select sec_to_time(2378) + 0;
/ ^# H$ [; `3 H5 Y2 m -> 3938
) L/ K* e$ ]* Y' l
! w8 l7 q: R# @, n7 b3 ^time_to_sec(time)
0 b h5 l( t& ~3 }1 O返回time值有多少秒
4 |! S3 S2 w0 o/ n; M2 x. E# Qmysql> select time_to_sec('22:23:00');
9 Z, _7 l, C6 D -> 80580
) [( g; T. v8 M- gmysql> select time_to_sec('00:39:38'); ! J$ U. @0 N1 X( X9 F( ~
-> 2378
/ Z2 v: }+ V0 D6 ]% x# g& p% V8 x : {$ I1 d$ k& L/ M" y
转换函数
4 h" @- z j2 Ccast3 e( Z p( ]7 L. w3 x y
用法:cast(字段 as 数据类型) [当然是否可以成功转换,还要看数据类型强制转化时注意的问题]8 A* R9 v7 g0 J* {
实例:select cast(a as unsigned) as b from cardserver where order by b desc;
3 s% r( t& U- Fconvert:
9 y7 s- s9 }5 c% H& Y$ c: I( Z8 z用法:convert(字段,数据类型)1 V, x( [ p+ p* K/ ]9 J
实例:select convert(a ,unsigned) as b from cardserver where order by b desc;
3 [8 G# T: K* Q% }( ?; {9 t4 I+ g |