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