中国网络渗透测试联盟

标题: mysql常用函数大全 [打印本页]

作者: admin    时间: 2018-3-21 16:07
标题: mysql常用函数大全
1、字符串函数( M& ?1 r% s; J1 r' f
ascii(str)   . U" r3 y0 _) _9 {. r
返回字符串str的第一个字符的ascii值(str是空串时返回0)  
. [  ^$ X2 ^$ S# {& c( V7 t  W1 _mysql> select ascii('2');  
8 d6 a8 q3 y, Q' e8 n: }  -> 50  
# |) W/ O$ X) G( z# m4 R7 V. Y6 {mysql> select ascii(2);  
2 h" \* @6 {* ?$ |3 l4 e  o; W  -> 50  
: p7 w; H) ^# u& f6 xmysql> select ascii('dete');  0 e: q( v) A4 L. {9 ]0 `5 o1 G/ I
  -> 100
' O& ~9 P# t. z' v  C) z5 D
ord(str)     J! H1 W- J$ P
如果字符串str句首是单字节返回与ascii()函数返回的相同值。3 V4 _0 l' V1 O. P' m
2 b$ w- _% ]+ A) p' t. [( o
如果是一个多字节字符,以格式返回((first byte ascii code)*256+(second byte ascii code))[*256+third byte asciicode...]  $ D/ }: W3 c, I
mysql> select ord('2');  5 K- S3 G1 v9 P; N1 v
  -> 50  
$ P/ d4 D% r" ]0 o' Z3 ^& c1 R   8 l) g3 E( z  u: [  J  [
conv(n,from_base,to_base)   
+ m9 p' }2 z7 i1 Z# n' s对数字n进制转换,并转换为字串返回(任何参数为null时返回null,进制范围为2-36进制,当to_base是负数时n作为有符号数否则作无符号数,conv以64位点精度工作)  , ?. H2 q0 y$ I' b% b
mysql> select conv("a",16,2);  
& b: A* f- I7 v2 U. B- y  -> '1010' 7 p# Z# ?2 v/ v- R+ V5 K( L  K
mysql> select conv("6e",18,8);  
2 ?: E+ X9 _6 ]7 n" P  -> '172'
' g* q8 ~, i6 H; J+ T2 hmysql> select conv(-17,10,-18);  ) M, ~; o3 Z+ D! a/ e) Y; N
  -> '-h' % X3 R4 L# k/ K
mysql> select conv(10+"10"+'10'+0xa,10,10);  
; R% L( W( H1 e  -> '40' 2 u5 b, U& W8 e: `4 i( z8 h  [
   
( e! |. X* C0 Q+ R; X2 Dbin(n)   + J5 R: [0 L* W6 f. C6 e& d+ p
把n转为二进制值并以字串返回(n是bigint数字,等价于conv(n,10,2))  * d+ T- \. O4 b8 d' ?; h- v4 F
mysql> select bin(12);  
* [" C' E1 V5 X  l8 b6 }: ?( |  -> '1100' 3 X* x+ a& \- L& ]7 {  H
) N0 ~/ l& X3 m4 R
oct(n)   
4 G) L  V4 t2 {: U" N把n转为八进制值并以字串返回(n是bigint数字,等价于conv(n,10,8))  
, j1 e# X9 O! r+ t4 emysql> select oct(12);  9 X# l8 ~5 k' q* x! P
  -> '14'
# p6 @8 t/ w; u. m1 y% W   " N" I6 F! s0 O
hex(n)   
. S0 e8 P+ g0 p. E: n把n转为十六进制并以字串返回(n是bigint数字,等价于conv(n,10,16))  
$ a- j; w# l! Q. t" umysql> select hex(255);  + y. q8 g, n+ c. Z! e
  -> 'ff' ; o+ M7 L$ C( `& |3 W
   . x0 K4 R2 Y2 l7 q
char(n,...)   
7 s# H$ h' b! V$ I8 ?返回由参数n,...对应的ascii代码字符组成的一个字串(参数是n,...是数字序列,null值被跳过)   
+ r6 k; w- M! w+ \mysql> select char(77,121,83,81,'76');  , I+ K& y$ [$ O5 C  g, P4 h% _
  -> 'mysql'
& n. U4 k5 x( r2 Wmysql> select char(77,77.3,'77.3');  
" r6 M1 V% G+ s9 Z+ l: }" x7 i  -> 'mmm' ; J$ h' ?, I) N+ p3 R
   + Y; _( e9 B$ @/ J  K( N+ v; e
concat(str1,str2,...)   % t( N8 w+ F" H, f+ g
把参数连成一个长字符串并返回(任何参数是null时返回null)  ( M/ W9 F2 ^, C: P
mysql> select concat('my', 's', 'ql');  ' Y. g: A0 l+ {. u( S& d
  -> 'mysql' 5 V' u$ a$ D5 M1 ~
mysql> select concat('my', null, 'ql');  
- x4 {/ k7 D0 |- P. A1 Y  -> null
. `" E8 i, F5 Z6 `9 o. j3 m6 f& Cmysql> select concat(14.3);  
* r% P! g7 p6 G9 C" O& C  -> '14.3' 5 K7 H2 ?- T( w8 H+ }# g3 t
9 T' t; z8 B4 E0 X
length(str)   1 T9 A& ^( U/ F) a- m  u4 S0 I
octet_length(str)  ( I) E3 y: `: r$ W2 |  \
char_length(str)  0 D3 `- k' p* P0 Y' j
character_length(str)  
: e* `: X( Q6 V返回字符串str的长度(对于多字节字符char_length仅计算一次)
6 g- W" \: d. P+ Wmysql> select length('text');  ! W" |, C2 m. Q
  -> 4  
6 @) y; F: O0 Zmysql> select octet_length('text');  
5 i/ n0 J4 l6 n, ?" c. `, `0 a  -> 4  7 i0 j& v+ h$ h) b# L% l5 Q
* i% _3 |6 S$ s9 S! L2 F
locate(substr,str)   
2 {: ]5 H! i+ bposition(substr in str)   8 @3 |0 g8 k) `) s
返回字符串substr在字符串str第一次出现的位置(str不包含substr时返回0)  ( n3 \) {. Z" }: {8 u! W
mysql> select locate('bar', 'foobarbar');  
7 ?6 D! h; |1 c* F+ P( o  -> 4  
  {8 J- Q7 j& mmysql> select locate('xbar', 'foobar');  ! l6 T  @: |# t: I' s
  -> 0  
( ?1 f7 m3 T, e   
5 F, v1 c- K5 l0 v1 klocate(substr,str,pos) 6 }) m/ j9 a5 s/ d/ d! W
返回字符串substr在字符串str的第pos个位置起第一次出现的位置(str不包含substr时返回0)  
4 F  E+ X' Q% Cmysql> select locate('bar', 'foobarbar',5);  6 X  S9 R. [6 q. a4 W
  -> 7  # U' S! E( h7 m, O. T

% m, J3 w/ b  \instr(str,substr)  
0 P% k$ ?5 w& M3 V返回字符串substr在字符串str第一次出现的位置(str不包含substr时返回0)  " c& Z1 s5 B& b0 L9 ?; ]" s% s
mysql> select instr('foobarbar', 'bar');  . y( b# l1 v. X1 @6 m2 m
  -> 4  $ L5 m9 x- z' N6 j* C7 c
mysql> select instr('xbar', 'foobar');  $ s) B) V5 f7 b0 f0 N6 I
  -> 0     {2 X8 S$ x' q8 F. k* }4 m: `
! w; l- L, ~: L
lpad(str,len,padstr)   ( S# w! f4 J6 u: r$ j9 p2 n0 I
用字符串padstr填补str左端直到字串长度为len并返回  
9 j. M) E5 E4 W: m" E- _mysql> select lpad('hi',4,'??');  
4 a$ E& O. ~: d; ]' [8 F( `  -> '??hi'
. X( [0 V9 e# d* s   ; T& n7 ?- Z3 ^1 f$ [& Q) H! p
rpad(str,len,padstr)   0 x& o& |+ g: M" q; B$ l5 o
用字符串padstr填补str右端直到字串长度为len并返回  
' f4 S1 k" N& ?# H3 Q" cmysql> select rpad('hi',5,'?');  
" K5 x5 a1 I4 i8 N" F+ z3 n  -> 'hi???'
+ w# K1 o3 ?% A4 [5 [6 d9 I % w) g( k" @: Z& l, ^
left(str,len)   9 B' y6 f6 v: W- e- d2 [% m  ^8 v
返回字符串str的左端len个字符  
+ w3 Y* J+ b& Z7 Zmysql> select left('foobarbar', 5);  * v( v! t$ F/ E0 A0 |; g& S
  -> 'fooba'
% O; _  x+ G8 ^0 h 3 M! C8 ?; ]! Z2 G( A
right(str,len)   $ S- f' F+ Y7 S0 g5 @6 y1 t
返回字符串str的右端len个字符   
; z* x4 T5 R- h7 D1 Q3 x3 @* Ymysql> select right('foobarbar', 4);  
. e$ @; M. b7 o/ Y; |  -> 'rbar' 3 y5 K* n/ a- g
8 `' N* S: ?/ p; L. @& W
substring(str,pos,len)   9 j$ A/ a) Q$ W( z4 c2 v2 S5 ]
substring(str from pos for len)   
# ~# i% X. d! X) u6 m. q2 Vmid(str,pos,len)   : J9 s' R/ y5 N% g$ z% h
返回字符串str的位置pos起len个字符mysql> select substring('quadratically',5,6);  
0 H  g* n6 }: g4 Z' _& l  -> 'ratica'
8 A  T& F8 {. e4 Q. D8 G/ F
6 W/ J$ h. {! p2 U& asubstring(str,pos)   3 ]" f, P$ [8 C$ E7 j* A3 K
substring(str from pos)   
: M/ A$ ]. f3 B5 K4 T: y9 ~返回字符串str的位置pos起的一个子串  
& z& F$ p( w- s- Amysql> select substring('quadratically',5);  / }7 Q. x$ e: D" J! f# M
  -> 'ratically' - ~' h! p  i8 Q' h3 l6 K
mysql> select substring('foobarbar' from 4);  
; Z2 c1 p0 ~8 N  -> 'barbar' 3 I' A; R1 {+ c3 h
% U9 U0 H" F: m" t, I7 Q/ F
substring_index(str,delim,count)   - x: N6 A" P7 A& i- H
返回从字符串str的第count个出现的分隔符delim之后的子串
2 U. L6 k  O4 a8 M  L(count为正数时返回左端,否则返回右端子串)  
, {9 j1 o" l8 d0 l0 b' ?, j7 \mysql> select substring_index('www.mysql.com', '.', 2);  7 @5 @9 L' M5 _7 T6 X5 b
  -> 'www.mysql'
% W/ ]* T6 ^' dmysql> select substring_index('www.mysql.com', '.', -2);  
, I6 n. {7 x2 u4 H# q" s* X/ b  -> 'mysql.com'
! P: l% g' Q: U6 D. U
$ y/ S% p1 n- O! _+ \ltrim(str)   
, b6 U: e" E+ {+ z7 j- y0 F5 s返回删除了左空格的字符串str  
7 x* k( i1 x/ }3 Zmysql> select ltrim('  barbar');  , v* d0 s6 m- ?4 k( R
  -> 'barbar'
: U$ ?/ _, l9 K' c
) ?, V7 \7 l5 Z9 t! mrtrim(str)   
) S/ {. R  t+ @. ^- a0 U3 r) j返回删除了右空格的字符串str  / i, m+ E7 X$ Z' U$ G$ U5 s' N
mysql> select rtrim('barbar   ');  
2 {6 y) T" P! M$ k6 E0 x; \$ I4 D  -> 'barbar'
. ^1 B  P' g$ s
0 q* H: ]7 O$ ytrim([[both | leading | trailing] [remstr] from] str)   ' a5 W- }) Q) f5 J
返回前缀或后缀remstr被删除了的字符串str(位置参数默认both,remstr默认值为空格)  
5 x0 P1 @/ S9 G* Z  v1 |8 tmysql> select trim('  bar   ');  
% E9 {. x3 \+ _; S0 [1 |# K& S5 }  -> 'bar' " `' p7 g! E3 o# |; o. C1 Y8 H" v
mysql> select trim(leading 'x' from 'xxxbarxxx');  
* i9 z3 ^& F3 N7 @. j8 B0 G  -> 'barxxx'
9 e% x' J9 d2 a' Umysql> select trim(both 'x' from 'xxxbarxxx');  ) B; J- ^# x* y0 j* y$ k
  -> 'bar' : |8 M* r" U) m+ C8 S
mysql> select trim(trailing 'xyz' from 'barxxyz');  3 @5 J. ]' u& g8 U# Y6 r
  -> 'barx' ; N3 X( S; M- d  Z! l3 _

* ^' E# N; @2 |soundex(str)   
+ N3 m* _1 l5 w% G) H; b返回str的一个同音字符串(听起来“大致相同”字符串有相同的" i: T/ C! F. \
同音字符串,非数字字母字符被忽略,在a-z外的字母被当作元音)  
6 o- F) e) U- T) S1 ?- dmysql> select soundex('hello');  
8 F. K* J' t. Z, S! ]7 s' b7 L  -> 'h400'
! Q. Z8 t5 j- W  f$ }mysql> select soundex('quadratically');  / R) V3 I: r; \
  -> 'q36324' + B( X( l- O# |
   5 m# S0 ^; P- K8 I$ g
space(n)   & U5 A- a8 D  y3 Z1 a& V" v
返回由n个空格字符组成的一个字符串  
8 \* Y) U6 n' M/ smysql> select space(6);  0 r2 \' J( _; {% h) `
  -> '      '
& e% A1 I# B: b9 Q: b   
/ C4 z  i( a2 w- W) @replace(str,from_str,to_str)   5 }3 ]9 Y! W  l) v9 e! i
用字符串to_str替换字符串str中的子串from_str并返回  
/ C9 v8 ?5 H: w  smysql> select replace('www.mysql.com', 'w', 'ww');  
0 J' ], z% A  _7 o0 q: j; y  -> 'wwwwww.mysql.com' + v, d0 D) b9 a

+ Y! o5 x/ R& t7 U3 D1 brepeat(str,count)  
# {- @1 U: ?  u$ g, l3 ]( t/ j返回由count个字符串str连成的一个字符串(任何参数为null时* _% J4 b) L; N9 A8 f
返回null,count<=0时返回一个空字符串)  
# i, ~! f3 P% Umysql> select repeat('mysql', 3);  ; ?( g, s- }0 Q% `: F- O0 W4 q
  -> 'mysqlmysqlmysql'
9 V* h& Z/ |6 s, U! v) \4 q   . _# `  k4 C5 C3 U
reverse(str)   # r2 F3 w* R: e9 K" w4 f
颠倒字符串str的字符顺序并返回  
8 P, _. ?: c- `, Tmysql> select reverse('abc');  $ Q$ i4 t/ u  O8 P
  -> 'cba'
& ~; w0 D; R+ r; T: v  w/ {+ M7 e5 C / j5 _( \! G* e  K
insert(str,pos,len,newstr)   ' z- y# P# c9 O; I
把字符串str由位置pos起len个字符长的子串替换为字符串7 d2 s5 q' H6 c
newstr并返回  
% p  F+ O- s3 j) [' ?4 t! ~4 N" umysql> select insert('quadratic', 3, 4, 'what');  $ ?& p; l* E. t* g  ]8 Z
  -> 'quwhattic'
6 W: T2 b, y7 c$ u# } ; e( P3 j$ u) J; R9 L
elt(n,str1,str2,str3,...)   6 r$ h" o! W. X# g6 r6 N
返回第n个字符串(n小于1或大于参数个数返回null)  ; S1 `5 ?2 a/ E8 m$ a
mysql> select elt(1, 'ej', 'heja', 'hej', 'foo');  
4 r- m% }9 m8 x, F2 b8 a% B  -> 'ej'
+ b% m6 A1 f% F- W% {2 emysql> select elt(4, 'ej', 'heja', 'hej', 'foo');  
5 B% z; W( R3 a/ s. o/ t. R) Z  -> 'foo'
% N7 n5 B( u+ {' @* n) H
! F& n' U+ D( b/ `field(str,str1,str2,str3,...)   / ~3 S8 ~7 o: T% z. \. {; i' s+ l
返回str等于其后的第n个字符串的序号(如果str没找到返回0)  
; k- r+ n+ W, e  ]2 d7 s! pmysql> select field('ej', 'hej', 'ej', 'heja', 'hej',
# x: ^% ?' O, n1 F'foo');  
: M8 `1 D1 `( x  -> 2  
- F) u# x) e2 F% _  }8 H+ zmysql> select field('fo', 'hej', 'ej', 'heja', 'hej',
; k! u0 U7 j. e2 k) \* v, _; T0 H'foo');  
0 g  S$ l: y) }  -> 0  7 T' e6 Y. m* Y3 X2 ?
1 T; w9 B* s$ u" @+ X' y
find_in_set(str,strlist)     _) L, u# e! e9 O6 {+ W; R' y6 \
返回str在字符串集strlist中的序号(任何参数是null则返回
) e4 ?$ Q2 H  a& rnull,如果str没找到返回0,参数1包含","时工作异常)  
  s9 E4 Q0 j( A- S. ?* u  N& kmysql> select find_in_set('b','a,b,c,d');  
* Q0 Z1 [% u2 P  -> 2  
+ y. K4 K# D  S9 S   
  a; S( ?0 f0 E: omake_set(bits,str1,str2,...)  
5 n- \# P. K; w0 }3 L把参数1的数字转为二进制,假如某个位置的二进制位等于1,对应  x6 x% i  H; C, X: Q& ]
位置的字串选入字串集并返回(null串不添加到结果中)  
0 {: O; D0 z8 S. R( Y: Z9 `% N3 \mysql> select make_set(1,'a','b','c');  2 I1 l6 ]4 n9 {' o
  -> 'a'
" |8 a2 |0 v6 D5 s' j  @+ Zmysql> select make_set(1 | 4,'hello','nice','world');  * a: o1 Q4 L0 I0 L; `, m
  -> 'hello,world'
8 e5 }* \4 `0 r6 Cmysql> select make_set(0,'a','b','c');  7 [2 H# P% O7 f, B' N
  -> ''
5 z0 z' _7 x; t  u1 m ; E" t  G0 M8 r) W# q: {7 }
export_set(bits,on,off,[separator,[number_of_bits]])   8 E6 O- J. s# h
按bits排列字符串集,只有当位等于1时插入字串on,否则插入6 n: O" g& D3 e' {- d
off(separator默认值",",number_of_bits参数使用时长度不足补0
+ L7 F/ I7 ~) u- D. G, o而过长截断)   & s# p& q1 X9 M1 Q6 s
mysql> select export_set(5,'y','n',',',4)  
; M/ E, D$ _* F( t1 f+ Y5 F/ H  -> y,n,y,n   / W/ z7 H9 L# B. U2 @3 f! H
5 m4 Z) r2 K3 ]# b
lcase(str)  5 ]5 K( F3 z9 F4 m( u5 ]+ O, {0 G
lower(str)   
5 A/ k6 X+ A; l4 H. Z: t$ l" o0 P返回小写的字符串str  
$ @+ k' v+ J, Bmysql> select lcase('quadratically');  ' I1 i% B% R2 z, n% ~; D4 }  l. n
  -> 'quadratically' 8 R4 }& h4 H. X
   
! h! n8 B) ?- Hucase(str)   % V& c0 `" g6 O5 i7 b3 K5 s7 N+ _
upper(str)   ) g, w# F' w; K0 u
返回大写的字符串str  3 H7 G/ Y# `2 S3 h+ e
mysql> select ucase('quadratically');  
! L/ N( {5 y" \" f% B5 [; l/ e  -> 'quadratically' 3 y+ Z3 w) ~) u
. ^# u( H# O  b' g: T' `
load_file(file_name)   
- U! Y9 n: \: z' _读入文件并且作为一个字符串返回文件内容(文件无法找到,路径
" k# m6 W8 `1 @& v# f+ y0 [5 D不完整,没有权限,长度大于max_allowed_packet会返回null)  
; p0 E. ?. J$ o. Imysql> update table_name set blob_column=load_file( Y( V3 `/ R& E. I
("/tmp/picture") where id=1;  
* V1 g/ X4 _) R: e
" p0 l$ Y+ A0 G2、数学函数
0 ^4 r3 M' r' s9 U: \abs(n)
9 M' P. `1 I" a- r) Q( ^& O返回n的绝对值  
! o* ?- o7 q0 w" bmysql> select abs(2);   
# G! I+ w1 f' N% _3 n& S  -> 2   
( B! `- p5 x2 p. c( Umysql> select abs(-32);   
; \! F+ r' b$ w* w. k0 j$ s* ]7 r  -> 32   
. t4 e, q" N( H   . |1 Y* F4 Y9 w! r
sign(n)  , Z9 i; t, |6 C" a# D7 a8 B4 C7 J
返回参数的符号(为-1、0或1)  9 Q( l/ x' c* D3 ~9 {  [! {  p
mysql> select sign(-32);    0 L. C, W  [; Q: f( Y, w# N0 l
  -> -1   
0 M; J' y9 h  B. G- P; R1 w5 Hmysql> select sign(0);    ) `% k. U: ]  I8 ~
  -> 0   
& \+ M' g. K' d+ M/ s  ^mysql> select sign(234);   
# T$ N+ L3 z$ z8 ]  -> 1    $ W# A' H2 Q+ q6 b/ x
4 d$ J# K& N6 _+ s7 ~# z
mod(n,m)    . F) Q) H- W$ t; d
取模运算,返回n被m除的余数(同%操作符)   
, g0 h" Y3 ^/ o) V7 _5 A& f  ?mysql> select mod(234, 10);    ) a$ C8 y  [& v: k( |
  -> 4   
  e' j) S6 t4 b. kmysql> select 234 % 10;   
9 T( k! i  O/ J7 Y% W4 h9 j& t  -> 4   
+ r  x! p4 l3 V+ dmysql> select mod(29,9);   
; V7 k# u; k! }% C  -> 2    $ E$ R5 D$ e2 C% T
: u/ o; w; D+ o8 [" g% P
floor(n)  9 v& a9 ?. [. [. O
返回不大于n的最大整数值  
- P" G; Z8 k' e: h) t8 bmysql> select floor(1.23);   
* u) J; z- n1 V  -> 1    / j- K9 M& P( J: I1 m- O
mysql> select floor(-1.23);   
" W$ \9 E4 O7 a! ~& h  -> -2    " Z* P$ B; w0 m* n+ x

# v3 X- N4 n1 e0 K4 [4 xceiling(n)    x5 \; L$ ^- k. s2 v' W8 H
返回不小于n的最小整数值  * T5 L) {3 a/ K6 S6 P& p
mysql> select ceiling(1.23);   
& U8 ?# V7 W& e: R, p1 m  -> 2    ' b/ b# L& U5 w! S9 l
mysql> select ceiling(-1.23);   
2 J# q/ G& G! j" N# ?. M) h  -> -1    4 C6 Z0 {  o6 a! `3 g

: i3 g" o" }" ^. ~round(n,d)  ( R1 C* @" |7 ^' a/ q  d/ K
返回n的四舍五入值,保留d位小数(d的默认值为0)  - n. K, c" Q6 t& ^
mysql> select round(-1.23);    ) k/ c  m; D7 e7 u' ~+ W( d
  -> -1   
+ p0 M5 P2 v! P9 l6 z4 m( ?mysql> select round(-1.58);    0 d4 J4 V7 ]* q) n$ c# z8 P
  -> -2    8 i, @9 J/ w# b: ]
mysql> select round(1.58);   
2 ]. V2 e4 |( n5 g  -> 2    ( X% v0 n% W6 i8 l3 A. b
mysql> select round(1.298, 1);   
5 B2 A- r; f& n2 l: F$ t, k  -> 1.3   
: M0 i8 N; x# n5 dmysql> select round(1.298, 0);    - C. x3 \2 E% t6 t1 d8 F0 ~0 f
  -> 1    ( K  J7 J" k( N6 l7 v7 i3 d* {

. w. _; I) h2 N( v$ g7 Hexp(n)  ' J" v" s0 j8 Y9 |& T% l
返回值e的n次方(自然对数的底)  
( o/ E% F7 t0 S4 _- `, x  a; u* ?mysql> select exp(2);   
6 F2 K) v9 s4 Z( ?, U, n  -> 7.389056    / R& T2 z( z' c
mysql> select exp(-2);   
: x0 R" ]; U% l: \& I1 E# C7 M  -> 0.135335   
1 q7 I* s" H+ O( H & V3 ^' w2 j+ a& P, b+ W7 W( W
log(n)  ' k3 b- D7 r  e7 g6 V. U- i
返回n的自然对数  ) H7 D! x, l0 U. t( |2 k' L
mysql> select log(2);    ' V* I. j4 J3 U3 U2 K$ [' |0 H: t
  -> 0.693147   
2 S6 Z2 ^! W9 H& F0 _" fmysql> select log(-2);   
5 n& M3 H; x) Y1 a2 Z0 ~% E7 P  -> null    5 ?: k# T: u4 i, v. b
) U0 K% {( \# ^  }- S
log10(n)  
% n/ O! F+ Z" b返回n以10为底的对数  
& p1 I) w3 m4 z% dmysql> select log10(2);   
7 p, P. ]$ ?$ d" q2 I  -> 0.301030   
8 i3 }) `0 N5 J7 \4 P2 {2 t6 ?mysql> select log10(100);    + C# S9 b! y; |1 O0 X
  -> 2.000000   
: C* S# I2 w: [$ C( p8 mmysql> select log10(-100);   
9 i# t. x3 @% A! V; Z" R6 L* x- v! t  -> null   
5 M5 d2 E- x1 \8 o- q9 I $ A: o: t# P7 Y- r# [" o
pow(x,y)   
3 H! L7 ?: Q! l. mpower(x,y)   
$ d0 j. W$ l' N9 A  I 返回值x的y次幂  
) I8 t5 E) \% E, C# N& Fmysql> select pow(2,2);    + {3 D, m- T3 X2 \- y8 c
  -> 4.000000    / z$ h/ x; Y% L
mysql> select pow(2,-2);    8 z# Y) A  ^) }
  -> 0.250000  1 ?, f% F7 n. {) @( j5 L* P
' o+ _/ [7 k, ?" y, m' T; d
sqrt(n)  " |' J! _0 E7 O) N4 i( e
 返回非负数n的平方根  
% ?" w; H: t; c; r& t. s" lmysql> select sqrt(4);   
' P$ \# [! ]$ P# Y3 l6 w/ `6 u  -> 2.000000   
) V/ Y6 j  N: p$ a2 g. amysql> select sqrt(20);    % @3 S4 d8 c' h6 X: ^) o0 v/ @
  -> 4.472136   
" b( ^, Q9 G. X/ b) n, k
" U- D% W* d% D9 S7 r* h4 spi()    $ b+ L7 X0 x3 n: @. f2 @0 K% x
 返回圆周率   ) d" q. t3 B$ l. h, x
mysql> select pi();   
! _0 P) h: X! e( V  -> 3.141593   
, D; y2 c" P0 B& [ 5 I* n, D' \0 D, ?7 k# V0 _1 N
cos(n)  % l) e; Q1 R2 F2 T1 z
 返回n的余弦值  
" K0 u# H. M3 gmysql> select cos(pi());  
7 [1 N- _6 G$ g/ ]( c+ `  -> -1.000000   
: \" K; H/ u9 p  C( h
) `9 s% Z+ P4 wsin(n)  / N$ E0 |2 G: V: X8 v3 O3 I
 返回n的正弦值   
5 [/ p/ l9 Q7 Y7 c( m2 D4 Qmysql> select sin(pi());   
! W  V5 ]9 Y( G' {! }: s  -> 0.000000   
6 ]; [# S; B7 Y  h, I) o : z$ M3 I1 U0 B0 [
tan(n)  
$ J( o! R: l. w5 p. Z返回n的正切值  
/ D- ?/ ^( [# V5 W7 I8 K# Xmysql> select tan(pi()+1);   
2 j  m% W% b8 h5 K" ~. R  -> 1.557408    * U" u8 F" `. t
* j* I; ]) x, T& t
acos(n)  ; E2 I8 h  P0 {3 H* c; R
 返回n反余弦(n是余弦值,在-1到1的范围,否则返回null)  
7 Q; p, Z* Q7 jmysql> select acos(1);    * j' T) b+ Q6 b# e
  -> 0.000000    + s  K1 `6 I, g: G! e0 }
mysql> select acos(1.0001);   
9 R2 m5 a  u+ V) u7 P  -> null    9 x- J0 h1 G$ O5 Z
mysql> select acos(0);   
6 I! \* b1 R. Z6 q  -> 1.570796   
( Q6 g, a2 x. F1 B: B8 I+ v$ o / k3 a) ?( I' k" n: i# T
asin(n)  8 A- s: [% H& k/ p% ?
返回n反正弦值  
0 K) A7 ]) Q. }1 F5 ymysql> select asin(0.2);    0 Q9 \0 C. Z& D4 K& g! A2 b0 Q
  -> 0.201358    - o7 a% o/ _) c9 P/ d/ H
mysql> select asin('foo');    5 o4 g5 h5 s( r; P$ R! c
  -> 0.000000   
) S% N6 D  W& S* X0 U$ f+ ^* z8 { % m3 M0 J) W# d3 l/ `  H/ ?3 r% |
atan(n)  
# W5 ^; Y, @3 m; N; K返回n的反正切值  
; B3 P) d! M9 a+ e! omysql> select atan(2);    % h4 W4 h' [8 ~/ o5 e! k$ k
  -> 1.107149    2 N' {, N9 r- u' E1 Z
mysql> select atan(-2);    . h1 G/ C5 w  J5 n2 m# i0 w
  -> -1.107149    # ?. j* t0 t3 B4 h" ?
atan2(x,y)    ( ]0 ^- E) X  N
 返回2个变量x和y的反正切(类似y/x的反正切,符号决定象限)  + }5 K: Y2 t$ V$ O9 j; r9 j
mysql> select atan(-2,2);   
% d# X% W5 [) N2 D  E) x- [  -> -0.785398      u- f$ ?8 q; M; X
mysql> select atan(pi(),0);   
8 I5 q( U% W  q8 w7 S. Y- x/ P  -> 1.570796   
: Q% k- j7 J" p
; d  g/ w0 p6 z" U. @cot(n)  4 f( g/ t4 ~& W/ ^, ~$ y9 d
返回x的余切  ' p, D- J5 T: ^- A( x! c
mysql> select cot(12);   
4 U6 C/ y4 O+ V+ a, G. G) d' s  -> -1.57267341    , m7 a( z4 d) }. F. j/ c3 E& i
mysql> select cot(0);   
$ C5 m  P1 c1 K! S* ?/ c# U  -> null    5 T2 d5 k4 k8 n( R1 b1 C
$ R& |/ i) V" ~9 e
rand()  
, G# g. @1 r" R' drand(n)      v3 [' v5 e3 e6 K3 J4 X( ~1 y1 U' R
返回在范围0到1.0内的随机浮点值(可以使用数字n作为初始值) 3 X# ^* ?) B) l: {  M- x- d
* e' g. T5 Y- n4 V
mysql> select rand();   
; S' W1 f1 e% v  s2 T( _6 W" M  -> 0.5925   
( @6 K1 `, w& L# P4 ]* mmysql> select rand(20);    # _7 p2 @  X( |$ i: a" p1 q6 w
  -> 0.1811   
+ n2 f" G# @# q4 Tmysql> select rand(20);    4 L& ^+ c) f+ q, Y% m5 a) _# \8 [0 f& ~
  -> 0.1811    / j" M1 ]: Z: u2 D/ S
mysql> select rand();    . B3 Z- D( @  W0 ~& ~2 ]
  -> 0.2079    $ U/ H+ \1 B+ A
mysql> select rand();   
0 C$ `! G8 b# @; {  -> 0.7888   
! P" u/ V& a) [
# t. L4 \: Y$ e/ G0 ~5 o  mdegrees(n)  3 a, G0 ^" V0 p3 n/ \
把n从弧度变换为角度并返回  4 W% z" r% m$ n9 h0 C. Z
mysql> select degrees(pi());   
) u$ `5 C7 n4 ^8 L' I  -> 180.000000   
( T( i! i; n7 {3 b2 c + ]9 L% [% O. F) {3 H1 k' d  d) \
radians(n)
$ W3 S8 L8 v  _0 T0 d把n从角度变换为弧度并返回   
- V5 y: @  G7 g: i3 kmysql> select radians(90);   
$ k1 D8 P; v3 h  -> 1.570796   
2 v# e; ^1 ^, P/ p$ F  h/ e6 w* @
) G* r' `5 E9 J0 X/ T  M3 u+ L2 q, Xtruncate(n,d)    $ [* x0 L: z+ p9 V, q( u
保留数字n的d位小数并返回  5 @! u+ c# A1 `( R; p3 k/ n' e1 a
mysql> select truncate(1.223,1);   
" x$ C: p9 w6 W3 a. K  -> 1.2    $ N3 C7 P6 I; Z* [4 |4 z0 G# i7 K5 w# V
mysql> select truncate(1.999,1);    4 U: S# ]$ C6 d! `& E2 W7 V& |9 D# Y
  -> 1.9    & J3 a5 R& `6 w$ {
mysql> select truncate(1.999,0);    ! m, S5 _' y, g
  -> 1   
! e4 b- A& L; J4 E/ G
1 [" V7 @& [+ I8 S( W% ^least(x,y,...)    $ D* l( t9 P; L* M3 l
返回最小值(如果返回值被用在整数(实数或大小敏感字串)上下文或所有参数都是整数(实数或大小敏感字串)则他们作为整数(实数或大小敏感字串)比较,否则按忽略大小写的字符串被比较)  
1 \+ h, \7 s: @. N' r) t( mmysql> select least(2,0);    6 d; U! Z" d* u4 s: A2 J) q
  -> 0    1 R4 r" v6 V8 l, H" H, X2 z9 d8 \
mysql> select least(34.0,3.0,5.0,767.0);      e, y6 E% U' ^6 b- x3 Z
  -> 3.0    , N9 t  W, a! w! [& E8 L
mysql> select least("b","a","c");    , F5 W9 K. q. q
  -> "a"   
$ p2 I: i; I& W# j! m* h; W7 c0 i # p( y- z9 j, f; F( |
greatest(x,y,...)    0 ]0 [5 u" h$ X: @5 ^* _" t7 @9 ^9 G
返回最大值(其余同least())  ) X4 A. f% c* g9 U. ?' N
mysql> select greatest(2,0);    ! m) Z4 u+ H$ m5 D5 M1 s
  -> 2   
2 g! _8 a; s8 U3 i, o0 a0 mmysql> select greatest(34.0,3.0,5.0,767.0);    ; e2 c  D8 ]. g" D* ~! Q% \
  -> 767.0    # }2 N% u2 z" Y! ?& a, {
mysql> select greatest("b","a","c");   
4 d/ s2 o3 d& l, v  A5 \  -> "c"     1 F) |3 i2 f" X) t" S  ?+ P
' ?5 w% f' e1 j8 H
3、时期时间函数 1 c- P) N, }+ @9 n4 [$ U
dayofweek(date)    6 D6 T. A' k7 M2 o" d8 c" ^
返回日期date是星期几(1=星期天,2=星期一,……7=星期六,odbc标准)  
. ~. H7 x( @7 M8 E6 x& P! ?$ L9 \mysql> select dayofweek('1998-02-03');    # ^9 r' M) f( ^
  -> 3   
. B+ C7 @& T* r( ~: v3 v3 d , ]4 G+ p4 [1 K3 j- t& b
weekday(date)    3 T! e& |2 `6 b
返回日期date是星期几(0=星期一,1=星期二,……6= 星期天)。 0 e6 D$ \9 [! [! R$ K$ _
  & q$ ?8 f8 v4 m+ V3 m: y
mysql> select weekday('1997-10-04 22:23:00');    6 A( ?$ p) e/ Z2 d- r* t
  -> 5   
( J4 G$ \* ]4 m1 nmysql> select weekday('1997-11-05');   
7 c4 C* r& ~# r+ s2 ]  -> 2   
9 A' _. K& c3 B+ k! m) ~3 ]% k& _
$ x& Y6 ?# d! k; ?: cdayofmonth(date)    : o. i5 W& s  \$ r$ Z
返回date是一月中的第几日(在1到31范围内)    8 B5 C) o1 X4 M7 `* N
mysql> select dayofmonth('1998-02-03');   
. m& h# T6 l0 G% A  -> 3   
8 F* R8 y% P/ k- e ) `* r" Z) R) t/ J0 X: A
dayofyear(date)    4 J) ]% [  y; z$ \/ U
返回date是一年中的第几日(在1到366范围内)   
( P1 Z' c6 B+ P( o( u+ B, t: [$ |! `mysql> select dayofyear('1998-02-03');    1 P2 r4 L( W% ]' n4 h* z
  -> 34    * J) ~! @- x1 `+ F
- U- F8 a/ N3 m- G, m6 V
month(date)    + D7 X* [1 J" I3 s
返回date中的月份数值    ) o2 i( K# X$ N* x9 M
mysql> select month('1998-02-03');    ! q! G: G4 a9 y9 q# W  Q$ a# c6 p
  -> 2    & M( j5 P) h) ^6 ?

5 r7 t# K5 X; n' j; @; adayname(date)   
: [& Z' N/ Q1 i8 O' f返回date是星期几(按英文名返回)  % U% @! o" `1 h, L* W
mysql> select dayname("1998-02-05");   
9 \  H4 G3 C. K& x  -> 'thursday'    ! m0 t5 a- G4 ~  \3 X1 p
6 c9 t- r1 b7 T1 D9 K  U
monthname(date)    
) I4 f9 r8 |  ]: D5 ~' h' L, u返回date是几月(按英文名返回)  
2 ?8 X# i* B7 T+ R0 Bmysql> select monthname("1998-02-05");    8 M3 F% F' A; ^! o! b% O
  -> 'february'    - j6 T- B) u$ P

) b, j, o: K" `2 |1 s. Rquarter(date)   
" L1 z& x) o/ {$ l& D3 w/ {5 W0 W返回date是一年的第几个季度    , ~; m" l. Z8 ^
mysql> select quarter('98-04-01');    5 w: \  `1 |( Z# s6 B
  -> 2   
+ v9 U5 A* B3 t# `8 @  ^9 Y
# G0 k" `3 K, V0 [week(date,first)   8 a7 J* c( r% I8 e$ P( ^; J
返回date是一年的第几周(first默认值0,first取值1表示周一是
3 f4 S; g0 `7 m3 I8 ^; q4 M4 _周的开始,0从周日开始)    X' r# B6 z- B" c" ?! e2 M% U* R! c/ d
mysql> select week('1998-02-20');    4 j. f: v% h* l
  -> 7   
3 A+ a+ n! S3 hmysql> select week('1998-02-20',0);   
" X8 J; P$ U* W$ Y( z8 ^" A& o, t: y% \) t  -> 7   
: k( y- }( E, R- r6 S( `+ ?/ `8 kmysql> select week('1998-02-20',1);      a. r/ @# x3 Q8 b2 d1 p
  -> 8   
- E- Y+ H& U! y4 p% S
$ J* t% V) N# V$ y! |year(date)    ' ~/ j0 `: z8 u6 l1 R
返回date的年份(范围在1000到9999)   
% m) F  ^4 l7 ^) V, h3 h/ ?mysql> select year('98-02-03');    6 |0 J9 G& \3 k' D7 @
  -> 1998   
8 {6 B2 {. s: c) N% @0 V# A. W
4 a- q4 Q/ }0 f+ K) }hour(time)    1 |4 A: Y3 V% T& k, ?1 K
返回time的小时数(范围是0到23)   
# J0 c# G0 i8 Z9 W9 {: Ymysql> select hour('10:05:03');   
, K3 _+ D4 ]6 w; m: _% n  -> 10    - F7 Z/ n6 k+ g3 t; n  B

: b+ F' N5 a. }, _6 U; Y. Fminute(time)    . `( ~! W8 ^' V7 H; F  b
返回time的分钟数(范围是0到59)    2 @6 b; E3 e6 W1 e, g! L; e
mysql> select minute('98-02-03 10:05:03');    : q. q5 y  K: s5 X- g" S/ Q) k
  -> 5   
, {) ?# n6 F9 Y# S; D$ ? 7 X' O; x% x; b% Q8 ]( j
second(time)    ; @7 D$ U3 Q; n1 H' O7 O1 A
返回time的秒数(范围是0到59)   / a# ?+ }- z5 G) @% C
mysql> select second('10:05:03');   
" e/ s& U# c3 Z2 U# E  -> 3    3 ?6 Z) u- m% _  L7 h8 o

/ Q6 M* \! Y! h5 Z$ Vperiod_add(p,n)   
! \3 m1 E6 {1 B# d8 i3 c增加n个月到时期p并返回(p的格式yymm或yyyymm)   
" L0 \5 p. X# q& w4 ^: a8 [mysql> select period_add(9801,2);    * o( S9 Q" p3 F' B
  -> 199803   
+ H/ G" N6 S, R& p/ U( | , i# z( e; P6 H3 c: q! j! F
period_diff(p1,p2)   
, V/ Q) @  x6 [* B! J0 l! _2 w  g返回在时期p1和p2之间月数(p1和p2的格式yymm或yyyymm)  
* f' l' T7 E) jmysql> select period_diff(9802,199703);    9 Y1 @. I7 [* r- y' A% F
  -> 11    ) J- P1 `+ R/ K3 P. w5 w* z/ Q& h7 I
$ a( ?( m! n9 r7 F- T; \
date_add(date,interval expr type)  ' N- K) V" Z/ {" T% f
date_sub(date,interval expr type)    * `' N- H, [% `8 k; i" ?
adddate(date,interval expr type)   
# \# W- }2 E9 }' L6 P! f& Bsubdate(date,interval expr type)  5 ^6 D% v$ u- v. f* d
对日期时间进行加减法运算  
+ H$ g5 B/ n$ e! `" p(adddate()和subdate()是date_add()和date_sub()的同义词,也" u3 F" C* m6 f" T( v7 \( r
可以用运算符+和-而不是函数  
4 S, J3 A% z$ {) ndate是一个datetime或date值,expr对date进行加减法的一个表
, T; V- L0 F6 n0 v: r- |& n达式字符串type指明表达式expr应该如何被解释  
6 p# B8 i$ h* I [type值 含义 期望的expr格式]:  # v$ ?- t2 u$ a% s# [  t: t! C+ H
 second 秒 seconds   
" u& y7 R, X& F4 T( v+ e minute 分钟 minutes   
; I8 m2 ^* j3 ]' v5 b! Y7 R hour 时间 hours    1 U! B) x3 g' G3 v) L2 S
 day 天 days    $ Z2 K0 Z4 I0 a0 c
 month 月 months   
0 q+ y, R  G: P2 o+ ~4 _ year 年 years    2 ^! i: U. w$ ~. T
 minute_second 分钟和秒 "minutes:seconds"    # C3 j$ G( w: x2 F+ o
 hour_minute 小时和分钟 "hours:minutes"    7 Y  j7 m& Q8 u6 J! P& V& ^# l: V
 day_hour 天和小时 "days hours"    % l% K. h% l' J* Y( W
 year_month 年和月 "years-months"   
4 j4 R9 h1 }/ S) y! O0 l hour_second 小时, 分钟, "hours:minutes:seconds"    4 ~4 q2 z7 [2 f, l3 `7 l
 day_minute 天, 小时, 分钟 "days hours:minutes"    6 I) o+ a0 [2 E& g! M! C% E$ e& ^
 day_second 天, 小时, 分钟, 秒 "days
8 q' ~$ \2 |/ X6 a. ?7 Zhours:minutes:seconds" / i; j4 F1 v0 ]2 I, ?# J' q7 d
 expr中允许任何标点做分隔符,如果所有是date值时结果是一个- o* o: _1 F! o& @5 S! }
date值,否则结果是一个datetime值)  
2 E) ~+ ]. A8 p2 P: \' ^6 B 如果type关键词不完整,则mysql从右端取值,day_second因为缺' S- z! j" a. T" T
少小时分钟等于minute_second)  
6 P2 f; O& y( p, {3 e- F6 r! t 如果增加month、year_month或year,天数大于结果月份的最大天
2 G2 p. M+ j1 L  Y7 j$ s% V数则使用最大天数)    2 p" _+ ^* s5 R! L5 |; @
mysql> select "1997-12-31 23:59:59" + interval 1 second;  
+ `- N8 l3 Z$ r1 ]4 A2 w+ T
& @2 n( W. M0 F  @  -> 1998-01-01 00:00:00   
. J3 k) M" p7 d  q2 p, |mysql> select interval 1 day + "1997-12-31";   
9 J% r* i& _3 ?& x8 D# K  -> 1998-01-01   
" B1 h( [3 `4 m8 U- _mysql> select "1998-01-01" - interval 1 second;   
! d3 a7 D' M2 _3 L6 l$ Z  -> 1997-12-31 23:59:59   
+ z0 W+ Z5 x0 z# }1 w, l1 vmysql> select date_add("1997-12-31 23:59:59",interval 1
$ @( B! K, j9 w- q) ?. m5 `2 {3 ysecond);    ! s( C. M6 f5 n" [4 O
  -> 1998-01-01 00:00:00    ! t5 W3 G9 G& t5 f6 [: d
mysql> select date_add("1997-12-31 23:59:59",interval 1  Q1 [3 Q1 A' j* W: m
day);   
2 @& L3 s# T+ z( h  -> 1998-01-01 23:59:59   
, t1 j: \$ Z' J8 [& Jmysql> select date_add("1997-12-31 23:59:59",interval5 X$ {5 s& P; T
"1:1" minute_second);   
0 f" B, n$ J1 w  -> 1998-01-01 00:01:00    ; W& a' \3 R) {" V6 n7 I
mysql> select date_sub("1998-01-01 00:00:00",interval "1
( Q  P+ i: f4 X" \1:1:1" day_second);    % D5 E( z, e( K$ Q& F; P& Q
  -> 1997-12-30 22:58:59    . J$ p* E( B. q# u, v# S8 a
mysql> select date_add("1998-01-01 00:00:00", interval "-1
4 x7 ~& u/ T/ k3 Q% k5 q% ~10" day_hour);  , \& W4 Q$ o5 Z8 J( i* }0 ]3 N4 R1 U
  -> 1997-12-30 14:00:00   
) u+ V4 L; h4 b% emysql> select date_sub("1998-01-02", interval 31 day);    6 k4 @+ m- Z% x0 O
  -> 1997-12-02   
8 G. A! W7 V3 n# i" K) R' v1 y+ M" zmysql> select extract(year from "1999-07-02");    5 c9 R  G- D8 ~
  -> 1999   
* D+ Y' M9 n" U: L* Rmysql> select extract(year_month from "1999-07-02
) L9 G5 c0 C( X5 i% R) ~( A" q01:02:03");    7 M$ I: q) D/ l+ y3 k) O  `- W
  -> 199907    9 j0 G; B$ ?& |' U" E0 W  }. O
mysql> select extract(day_minute from "1999-07-02
+ m7 y! p$ p. P3 Z9 n1 z01:02:03");   
4 o- F2 H# o- y5 W  -> 20102    ; F9 R& U- }' F. a- q  x

& @$ M0 u( s) n8 @/ I$ h. Q& ?3 p$ vto_days(date)    6 f/ p0 r+ F" t
返回日期date是西元0年至今多少天(不计算1582年以前)    t1 L8 b: Y! M' L. G
mysql> select to_days(950501);    ; s" A; Y+ @7 V' D& I
  -> 728779   
4 ^; s3 O( `' F- cmysql> select to_days('1997-10-07');    % T1 h* S# y0 s9 R
  -> 729669   
8 d( [# {) {5 E8 T) c; s: V : m8 p! u  Y2 q
from_days(n)    " Q9 o) n6 R" A+ x1 }( `& D% u4 ]
 给出西元0年至今多少天返回date值(不计算1582年以前)   
4 C; G( E* X* _mysql> select from_days(729669);    # O: i9 z3 u  V6 Z! H9 _
  -> '1997-10-07'    - J( @" G# t$ b" |- F
  O4 C) ?$ _2 a- a. s( I) N
date_format(date,format)   
0 j$ N3 m7 e9 p1 S6 i 根据format字符串格式化date值  
2 G" R8 N/ O  A7 H: q (在format字符串中可用标志符:  
4 o/ \% H6 Y; c) y4 _- { %m 月名字(january……december)   
# E1 y% I1 |* R3 ~( o% o5 ?4 n. g$ R %w 星期名字(sunday……saturday)   
  i- p  }6 x& K %d 有英语前缀的月份的日期(1st, 2nd, 3rd, 等等。)    8 }7 i1 F& [. P8 s
 %y 年, 数字, 4 位    ) x$ R% U* C* O* F7 C
 %y 年, 数字, 2 位    . Z2 ]! ~! Y% L( x( @
 %a 缩写的星期名字(sun……sat)   
0 y( R" i0 Y* g %d 月份中的天数, 数字(00……31)    6 o2 j, ~! x" n( j: A0 U
 %e 月份中的天数, 数字(0……31)    # P- y! v% v5 J8 _
 %m 月, 数字(01……12)   
, ?) p1 |5 L( I/ a( U %c 月, 数字(1……12)   
* z- m' w9 {: V1 m3 @! [! ~4 j! t %b 缩写的月份名字(jan……dec)   
3 I% ^0 C7 k) G %j 一年中的天数(001……366)    5 G) M& l' r7 ^2 {, r  u2 I
 %h 小时(00……23)    $ h1 J) p/ k6 I( A* ]% W
 %k 小时(0……23)    / R: C! o; n# J" W( F  I$ d
 %h 小时(01……12)    % P3 k8 D8 y7 V
 %i 小时(01……12)    4 R/ T% B: b* H4 C$ U
 %l 小时(1……12)   
* _5 S% E" U8 ~% G, } %i 分钟, 数字(00……59)   
2 V  @$ |) `) u$ e %r 时间,12 小时(hh:mm:ss [ap]m)   
  y2 W( ^8 \/ E. n" b) n %t 时间,24 小时(hh:mm:ss)    7 z3 o  X9 k8 U5 I' u
 %s 秒(00……59)   
/ |! A2 b/ a, {3 S+ C %s 秒(00……59)    ) s* R( R% G* Y( }2 g
 %p am或pm   
9 o! n( v( f5 W8 d: B9 K %w 一个星期中的天数(0=sunday ……6=saturday )      |" m- m/ Y( @3 i' m& A
 %u 星期(0……52), 这里星期天是星期的第一天   
7 |+ W* e; ], j5 w/ y3 p9 b1 Z' | %u 星期(0……52), 这里星期一是星期的第一天   
+ G2 L3 h. B' i/ \+ J7 p  O8 B %% 字符% )  
& ^6 `8 K( e! }8 hmysql> select date_format('1997-10-04 22:23:00','%w %m %0 `% Y7 a4 j& C0 D  k
y');    2 g  z; J5 X- X+ \! d/ R7 g
  -> 'saturday october 1997'    1 g+ m% [$ D4 M  i% g+ l
mysql> select date_format('1997-10-04 22:23:00','%h:%i:%$ }" k; i. q; A1 c/ }" k+ p3 ~
s');   
$ g/ V( b% k6 N1 b' N( G( w# x! S  -> '22:23:00'   
8 j9 G  F7 @( {+ k% A( xmysql> select date_format('1997-10-04 22:23:00','%d %y %a
3 Y* ?5 l1 e" e4 U4 m+ V%d %m %b %j');   
9 {& v! ?# ?: c- N& ?  -> '4th 97 sat 04 10 oct 277'    - [3 g2 a" X' D
mysql> select date_format('1997-10-04 22:23:00','%h %k %i3 H! W) A% P( W
%r %t %s %w');   
! r3 n8 U! D; k. H- X5 Y  -> '22 22 10 10:23:00 pm 22:23:00 00 6'   
4 X/ |, ]! o2 a& H7 m
* ?) F6 A9 F- R; |+ [9 {/ }( S4 ?time_format(time,format)  ; a: o' z/ P+ V- n" f6 s
 和date_format()类似,但time_format只处理小时、分钟和秒(其
. I$ L/ G9 t# E- r余符号产生一个null值或0)  
8 s% \& p2 v9 H5 p 2 Y  g2 f/ }$ F* Q0 {
curdate()     
( H* |! k  c- t& ~current_date()  
& w1 z( g  A. _' g, s/ }5 Z/ N 以'yyyy-mm-dd'或yyyymmdd格式返回当前日期值(根据返回值所, N4 |2 I% e# G. n/ J" M
处上下文是字符串或数字)   
! q. |+ A! s  J% S3 `" emysql> select curdate();   
, }& u7 K3 b. K9 i! \  -> '1997-12-15'    * u% O3 j+ k6 Q, c6 B: L3 k
mysql> select curdate() + 0;   
: U# [4 o1 X7 D9 T! y: H+ R  -> 19971215   
* a, l  O! ^! R" R 7 a3 O+ m, |% t; g, I8 l
curtime()    % r; R  q4 U, H4 l
current_time()  / y. B+ V# `1 {$ \7 Z! x
 以'hh:mm:ss'或hhmmss格式返回当前时间值(根据返回值所处上
5 U# A- ?! w5 I* i. S5 i下文是字符串或数字)      
" {9 h; Q2 a9 }6 E8 l4 x4 o! Omysql> select curtime();    ( E* W! Z" h; r2 M* Y" Q
  -> '23:50:26'    0 S: u9 P. t' N5 q" I7 \
mysql> select curtime() + 0;    & \4 c9 R7 p; J4 H0 w% X1 i6 K
  -> 235026    # g3 I6 f* }9 G, }" y
$ G, N; d$ k6 ?6 r5 r; ~1 f! T: C
now()    
/ h2 p3 b$ e( Jsysdate()    
" J  x6 [9 Z# L+ u$ |$ x2 vcurrent_timestamp()  
9 w8 l4 F; [5 d' l" h& m 以'yyyy-mm-dd hh:mm:ss'或yyyymmddhhmmss格式返回当前日期& }' o2 n; @+ M
时间(根据返回值所处上下文是字符串或数字)     ! V* P  H. h" K5 s' R, y
mysql> select now();   
' Y7 I; O/ Z; y2 r1 l6 s  -> '1997-12-15 23:50:26'   
% R8 Y) }% s3 o: ?mysql> select now() + 0;    / V* z6 t, [$ i! x9 v
  -> 19971215235026   
6 S1 w- n8 A- |1 |% o" K7 a . p( U0 s% D; M- P+ |
unix_timestamp()    & V* \! C% l8 W* z
unix_timestamp(date)   
" i$ U! @" s9 V( Y- E返回一个unix时间戳(从'1970-01-01 00:00:00'gmt开始的秒
( c& }0 N7 x6 d/ v, N  t% z数,date默认值为当前时间)  2 X& W. m/ W: C3 I2 Y' E1 k) `% S
mysql> select unix_timestamp();   
: D! |+ T5 c* H1 c  -> 882226357    0 Y  ]! B1 A1 ?# Q8 B0 |1 ?8 }
mysql> select unix_timestamp('1997-10-04 22:23:00');   
3 f9 E: M; L/ j2 v4 Y/ u# x% n5 i  -> 875996580    , N$ ?$ s% k- f$ s4 I! y" O. d

, E3 y/ e6 S- ^) M, I' t# cfrom_unixtime(unix_timestamp)    9 y" x0 q$ U3 c
以'yyyy-mm-dd hh:mm:ss'或yyyymmddhhmmss格式返回时间戳的' N& \; ?: {) L* {
值(根据返回值所处上下文是字符串或数字)     3 Z' |% [$ _# c$ ?4 {
mysql> select from_unixtime(875996580);   
# e% _' s3 L; o! \2 Y  -> '1997-10-04 22:23:00'    # g; {7 J- v) O
mysql> select from_unixtime(875996580) + 0;    ; l, f3 R+ a' C, a2 H) S; \$ h3 n
  -> 19971004222300    ( d2 W: [' p1 @) h
! ^# U7 Q  C4 h' E$ O$ F& n& o- ?
from_unixtime(unix_timestamp,format)    
7 w/ k) n( Y& _9 _以format字符串格式返回时间戳的值  
* N# d# O* a  r# D( x3 Mmysql> select from_unixtime(unix_timestamp(),'%y %d %m %, d* Q0 ]' q" b5 D+ _/ e( l) X
h:%i:%s %x');    4 d7 @, C" F( j* T/ t
  -> '1997 23rd december 03:43:30 x'    - D5 W/ _! D1 e+ a$ K; W0 U

* K' Q4 C- k% w8 Osec_to_time(seconds)    : I, ]; r- @6 C! d; K6 m: r
以'hh:mm:ss'或hhmmss格式返回秒数转成的time值(根据返回值所处上下文是字符串或数字)     : g2 [7 ^% ]- i! k8 U9 m; j8 s( }
mysql> select sec_to_time(2378);   
5 \6 c: s4 C: G* l: h0 ~1 c0 ^2 z  t  -> '00:39:38'    ( X/ L4 e- F" q; o6 t! _
mysql> select sec_to_time(2378) + 0;    2 f; O1 j1 H8 `
  -> 3938    . h: ?: j( x( |

. p* K% k6 }) P. @) }2 e! u! h  T0 Wtime_to_sec(time)   
0 M/ }% N' ]+ P+ x% d, Q+ t返回time值有多少秒   
4 I* v  T3 P" [+ V4 jmysql> select time_to_sec('22:23:00');   
2 F: o, ^# [5 |3 h+ g3 \  -> 80580   
$ J5 n6 z  F' ~2 S' t0 g+ ]% Umysql> select time_to_sec('00:39:38');    ! N! k3 \6 B; A
  -> 2378 ( P/ E& T8 L2 U' d" _3 i' h
# r# P% a, B) F, [' ^$ l
转换函数
9 X* x- a. _8 F# W+ U) Dcast
( N& ^& p7 y/ f( D* ?! A用法:cast(字段 as 数据类型) [当然是否可以成功转换,还要看数据类型强制转化时注意的问题]8 b6 A" ?2 u7 Y3 u& T- x8 H4 ?
实例:select cast(a as unsigned) as b from cardserver where order by b desc;
6 k7 M1 x$ U, I5 R8 ?  W4 n- _. X' N: lconvert:( O6 A' E2 Q) j' V8 r0 ]+ h! D6 ?
用法:convert(字段,数据类型)
1 H4 C9 C8 O+ l2 H实例:select convert(a ,unsigned) as b from cardserver where order by b desc;

. f9 x4 t0 W% l6 s- u4 J+ T




欢迎光临 中国网络渗透测试联盟 (https://cobjon.com/) Powered by Discuz! X3.2