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