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