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