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