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