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