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