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