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