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