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