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