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