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