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