mysql 函数

  最近一直挺忙的,项目要从mssql转到MySQL,从来没接触过MySQL,花费了几天时间看初入教程,今天下班早点,将一些知识点记下,增加印象,也方便以后查阅。

  

  首先是MySQL的一个sql分页。

 

1 USE jinriyou;

2 

3 SET @START=(@PageIndex-1)*@PageSize;

4 PREPARE mysql FROM 'SELECT * FROM userlogin WHERE (? IS NULL OR LoginName=?) AND (? IS NULL OR UserID = ?)  ORDER BY InsertDate DESC LIMIT ?, ?';

5 PREPARE counts FROM 'SELECT COUNT(UserID) FROM userlogin';

6 EXECUTE mysql USING @UserName,@UserName,@UserID,@UserID,@START,@PageSize;

7 EXECUTE counts
View Code

 mysql的存储过程.

  1 /*

  2 基本语法

  3  create procedure sp_name([proc_parameter])

  4     [characterstics ...] routine_body

  5 IN:表示输入参数

  6 OUT:表示输出参数

  7 intout:表示既可输入也可输出

  8 */

  9 USE db_zcy;

 10 

 11 DELIMITER $$

 12     DROP PROCEDURE IF EXISTS `AvgFruitPrice` $$ -- 判断存储过程是否存在,存在则删除

 13     CREATE PROCEDURE `db_zcy`.`AvgFruitPrice` () 

 14     BEGIN

 15         SELECT 

 16         AVG(f_price) AS avgprice 

 17         FROM

 18         fruits ;   

 19     END $$ 

 20 DELIMITER ;

 21 

 22 CALL AvgFruitPrice();

 23 

 24 

 25 DELIMITER //

 26     DROP PROCEDURE IF EXISTS `Fruits` // -- 判断存储过程是否存在,存在则删除

 27     CREATE PROCEDURE `db_zcy`.`Fruits` () 

 28     BEGIN

 29         SELECT 

 30         * 

 31         FROM

 32         fruits ;

 33     END //

 34 DELIMITER ;

 35 

 36 CALL Fruits();

 37 /*------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/

 38 

 39 

 40 /*

 41 基本语法

 42  create function func_name([func_parameter])

 43  returns type

 44     [characterstics ...] routine_body

 45 IN:表示输入参数

 46 OUT:表示输出参数

 47 intout:表示既可输入也可输出

 48 */

 49 

 50 DELIMITER $$

 51 DROP FUNCTION IF EXISTS `NameByZip` $$

 52 CREATE

 53     FUNCTION `db_zcy`.`NameByZip`()

 54     RETURNS CHAR(50)

 55     BEGIN

 56     RETURN (SELECT f_name FROM fruits WHERE f_id='t1');

 57     END $$

 58 DELIMITER ;

 59 

 60 /*------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/

 61 

 62 -- 定义条件

 63 /*

 64     declare condition_name condition for [condition_type]

 65     

 66     [condition_type]:

 67         sqlstate[value] sqlstate_value | mysql_error_code

 68 condition_name:条件名称

 69 condition_type:条件类型

 70 */

 71 

 72 DECLARE    command_not_allowed CONDITION FOR SQLSTATE'42000';

 73 DECLARE command_not_allowed CONDITION FOR 1148;

 74 

 75 /*------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/

 76 

 77 -- 定义处理程序

 78 /*

 79     declare handler_type HANDLER FOR condition_value[...] sp_statement

 80     handler_type:CONTINUE|EXIT|UNDO

 81     

 82     condition_value:SQLSTATE[VALUE] sqlstate_value

 83 condition_value:

 84     SQLSTATE[VALUE] sqlstate_value:包含5个字符的字符串错误值

 85     condition:表示DECLARE CONDITION定义的错误条件名称

 86     SQLWARNING:匹配所有以01开头的SQLSTATE错误代码

 87     NOT FOUND:匹配所有以02开头的SQLSTATE错误代码

 88     SQLEXCEPTION:匹配所有没被SQLWARNING或NOT FOUND捕获的SQLSTATE错误代码

 89     mysql_error_code:匹配数值类型错误代码

 90 */

 91 DECLARE @info CHAR(100)

 92 -- 方法一 捕获sqlstate_value:

 93 DECLARE CONDITION HANDLER FOR SQLSTATE'42S02' SET @info='NO_SUCH_TANLE';

 94 -- 方法二 捕获mysql_error_code:

 95 DECLARE CONDITION HANDLER FOR 1146 SET @info='NO_SUCH_TANLE';

 96 -- 方法三 先定义条件,然后调用:

 97 DECLARE no_such_table CONDITION FOR 1146;

 98 DECLARE CONDITION HANDLER FOR NO_SUCH_TABLE SET @info='NO_SUCH_TANLE';

 99 -- 方法四 使用SQLWARNING

100 DECLARE EXIT HANDLER FOR SQLWARNING SET @info='ERROR';

101 -- 方法五 使用NOT FOUND

102 DECLARE EXIT HANDLER FOR NOT FOUND SET @info='NO_SUCH_TANLE';

103 -- 方法六 使用SQLEXCEPTION

104 DECLARE EXIT HANDLER FOR SQLEXCEPTION SET @info='ERROR';

105 

106 DELIMITER $$

107     DROP PROCEDURE IF EXISTS `handlerdemo` $$

108     CREATE PROCEDURE `db_zcy`.`handlerdemo`()

109         BEGIN

110         DECLARE    CONTINUE HANDLER FOR SQLSTATE '23000' SET @x2=1;

111             SET @x=1;

112             INSERT INTO test(t) VALUES(1);

113             SET @x=2;

114             INSERT INTO test(t) VALUES(2);

115             SET @x=3;

116         END $$

117 DELIMITER ;

118 

119 CALL handlerdemo();

120 SELECT @x;

121 

122 

123 

124 

125 /*------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/

126 /*

127 

128 */

129 

130 IF val IS NULL 

131     THEN SELECT 'val is null' AS result;

132 ELSE 

133     SELECT 'val is not null' AS result;

134 END IF ;

135 

136 

137 -- 产看存储过程和函数信息

138 SELECT * FROM information_schema.`ROUTINES`
View Code

  mysql 视图

 

 1 /*

 2 视图可以进行增删改查,且在视图中增删改之后,对应的表也会进行当前操作

 3 

 4 create[or replace] [algorithm]={undefined|merge|temptable}

 5     view view_name[(column_list)]

 6     as select_statement

 7     [with[cascaded|local]check option]

 8 create[or replace]:创建或者替换试图

 9 algorithm:选择算法

10 */

11 USE db_zcy;

12 

13 CREATE TABLE t(quantity INT,price INT);

14 

15 INSERT INTO t VALUES(3,50);

16 

17 SELECT * FROM t;

18 

19 -- 单表试图

20 CREATE OR REPLACE VIEW view_t(qty,price,total) AS 

21 SELECT 

22     quantity,

23     price,

24     quantity * price 

25 FROM

26     t ;

27 

28 SELECT * FROM view_t;

29 /*----------------------------------------------------------------------------------------------------------------------------------------*/

30 CREATE TABLE student(s_id INT,NAME VARCHAR(40));

31 CREATE TABLE stu_info(s_id INT,glass VARCHAR(40),addr VARCHAR(90));

32 

33 INSERT INTO student VALUES(1,'wanglin1'),(2,'gaoli'),(3,'zhanghai');

34 INSERT INTO stu_info VALUES(1,'wuban','henan'),(2,'liuban','hebei'),(3,'qiban','shangdong');

35 

36 SELECT * FROM stu_info;

37 SELECT * FROM student;

38 

39 

40 CREATE OR REPLACE VIEW stu_glass (id, NAME, glass) AS 

41 SELECT 

42     student.`s_id`,

43     student.`name`,

44     stu_info.`glass` 

45 FROM

46     student,

47     stu_info 

48 WHERE student.`s_id` = stu_info.`s_id` 

49 

50 SELECT * FROM stu_glass

51 /*------------------------------------------------------------查看视图----------------------------------------------------------------------------*/

52 -- 字段详细信息

53 DESCRIBE stu_glass

54 -- 视图基本信息

55 SHOW TABLE STATUS WHERE NAME LIKE 'stu_glass';

56 -- 视图详细信息

57 SHOW CREATE VIEW stu_glass;

58 SELECT * FROM information_schema.`VIEWS`;
View Code

  mysql函数

 

  1 #字符串函数

  2     #1. ASCII(str) 返回字符串str的第一个字符的ASCII值(str是空串时返回0)

  3     SELECT ASCII('2');

  4     #2.ORD(str)  如果字符串str句首是单字节返回与ASCII()函数返回的相同值。如果是一个多字节字符,以格式返回((first byte ASCII code)

  5     SELECT ORD('2');

  6     #3.CONV(N,from_base,to_base)对数字N进制转换,并转换为字串返回(任何参数为NULL时返回NULL,进制范围为2-36进制,当to_base是负数时N作为有符号数否则作无符号数,CONV以64位点精度工作)

  7     SELECT CONV("a",16,2);

  8     SELECT CONV("6E",18,8);

  9     SELECT CONV(-17,10,-18);

 10     SELECT CONV(10+"10"+'10'+0XA,10,10);

 11     #4.BIN(N)把N转为二进制值并以字串返回

 12     SELECT OCT(12);          

 13     #5.HEX(N)把N转为十六进制并以字串返回

 14     SELECT HEX(255);

 15     #6.CHAR(N,...)返回由参数N,...对应的ASCII代码字符组成的一个字串(参数是N,...是数字序列,NULL值被跳过)

 16     SELECT CHAR(77,121,83,81,'76'); 

 17     #7.CONCAT(str1,str2,...)把参数连成一个长字符串并返回(任何参数是NULL时返回NULL)

 18     SELECT CONCAT('My', 'S', 'QL');

 19     #8.LENGTH(str)、OCTET_LENGTH(str)、CHAR_LENGTH(str)、CHARACTER_LENGTH(str)  返回字符串str的长度(对于多字节字符CHAR_LENGTH仅计算一次)    

 20     SELECT LENGTH('text');  

 21     SELECT OCTET_LENGTH('text');  

 22     #9.LOCATE(substr,str) 、POSITION(substr IN str)   返回字符串substr在字符串str第一次出现的位置(str不包含substr时返回0)

 23     SELECT LOCATE('bar', 'foobarbar');

 24     #10.LOCATE(substr,str,pos) 返回字符串substr在字符串str的第pos个位置起第一次出现的位置(str不包含substr时返回0)

 25     SELECT LOCATE('bar', 'foobarbar',2);  

 26     SELECT LOCATE('bar', 'foobarbar',5);

 27     #11.INSTR(str,substr)   返回字符串substr在字符串str第一次出现的位置(str不包含substr时返回0)  

 28     SELECT INSTR('foobarbar', 'bar');  

 29     #12.LPAD(str,len,padstr)   用字符串padstr填补str左端直到字串长度为len并返回  

 30     SELECT LPAD('hi',4,'??');

 31     #13.RPAD(str,len,padstr)   用字符串padstr填补str右端直到字串长度为len并返回

 32     SELECT RPAD('hi',5,'?'); 

 33     #14.LEFT(str,len)  返回字符串str的左端len个字符     

 34     SELECT LEFT('foobarbar', 5);  

 35     #15.RIGHT(str,len)   返回字符串str的右端len个字符

 36     SELECT RIGHT('foobarbar', 4);  

 37     #16.SUBSTRING(str,pos,len)、SUBSTRING(str FROM pos FOR len) 、 MID(str,pos,len)   返回字符串str的位置pos起len个字符

 38     SELECT SUBSTRING('Quadratically',5,6);  

 39     SELECT SUBSTRING('Quadratically',5);  

 40     SELECT SUBSTRING('foobarbar' FROM 4);  

 41     #17.SUBSTRING_INDEX(str,delim,count)   返回从字符串str的第count个出现的分隔符delim之后的子串(count为正数时返回左端,否则返回右端子串)  

 42     SELECT SUBSTRING_INDEX('www.mysql.com', '.', 2);  

 43     SELECT SUBSTRING_INDEX('www.mysql.com', '.', -2);  

 44     #18.LTRIM(str)   返回删除了左空格的字符串str  

 45     SELECT LTRIM('  barbar');  

 46     #19.RTRIM(str)   返回删除了右空格的字符串str  

 47     SELECT RTRIM('barbar   ');  

 48     #20.TRIM([[BOTH | LEADING | TRAILING] [remstr] FROM] str)   返回前缀或后缀remstr被删除了的字符串str(位置参数默认BOTH,remstr默认值为空格)  

 49     SELECT TRIM('  bar   ');  

 50     SELECT TRIM(LEADING 'x' FROM 'xxxbarxxx');  

 51     SELECT TRIM(BOTH 'x' FROM 'xxxbarxxx');  

 52     SELECT TRIM(TRAILING 'xyz' FROM 'barxxyz');  

 53     #21.SOUNDEX(str)   返回str的一个同音字符串(听起来“大致相同”字符串有相同的同音字符串,非数字字母字符被忽略,在A-Z外的字母被当作元音)  

 54     SELECT SOUNDEX('Hello');  

 55     SELECT SOUNDEX('Quadratically');  

 56     #22.SPACE(N)   返回由N个空格字符组成的一个字符串

 57     SELECT SPACE(6); 

 58     #23.REPLACE(str,from_str,to_str)   用字符串to_str替换字符串str中的子串from_str并返回   

 59     SELECT REPLACE('www.mysql.com', 'w', 'W');  

 60     #24.REPEAT(str,count)   返回由count个字符串str连成的一个字符串(任何参数为NULL时返回NULL,count<=0时返回一个空字符串)  

 61     SELECT REPEAT('MySQL', 3);  

 62     #25.REVERSE(str)   颠倒字符串str的字符顺序并返回  

 63     SELECT REVERSE('abc');  

 64     #26.INSERT(str,pos,len,newstr)   把字符串str由位置pos起len个字符长的子串替换为字符串newstr并返回

 65     SELECT INSERT('Quadratic', 3, 4, 'What');

 66     #27.ELT(N,str1,str2,str3,...)   返回第N个字符串(N小于1或大于参数个数返回NULL)  

 67     SELECT ELT(1, 'ej', 'Heja', 'hej', 'foo');  

 68     SELECT ELT(4, 'ej', 'Heja', 'hej', 'foo');  

 69     #28.FIELD(str,str1,str2,str3,...)   返回str等于其后的第N个字符串的序号(如果str没找到返回0)  

 70     SELECT FIELD('ej', 'Hej', 'ej', 'Heja', 'hej','foo');  

 71     SELECT FIELD('fo', 'Hej', 'ej', 'Heja', 'hej','foo');  

 72     #29.FIND_IN_SET(str,strlist)   返回str在字符串集strlist中的序号(任何参数是NULL则返回NULL,如果str没找到返回0,参数1包含","时工作异常)  

 73     SELECT FIND_IN_SET('b','a,b,c,d');  

 74     #30.MAKE_SET(bits,str1,str2,...)  把参数1的数字转为二进制,假如某个位置的二进制位等于1,对应位置的字串选入字串集并返回(NULL串不添加到结果中)  

 75     SELECT MAKE_SET(1,'a','b','c');  

 76     SELECT MAKE_SET(1 | 4,'hello','nice','world');  

 77     SELECT MAKE_SET(0,'a','b','c');  

 78     #31.EXPORT_SET(bits,on,off,[separator,[number_of_bits]])   按bits排列字符串集,只有当位等于1时插入字串on,否则插入off(separator默认值",",number_of_bits参数使用时长度不足补0而过长截断)   

 79     SELECT EXPORT_SET(5,'Y','N',',',4);

 80     #32.LCASE(str)  LOWER(str)   返回小写的字符串str  

 81     SELECT LCASE('QUADRATICALLY');

 82     #33.UCASE(str)   UPPER(str)   返回大写的字符串str  

 83     SELECT UCASE('quadratically'); 

 84     #34.LOAD_FILE(file_name)   读入文件并且作为一个字符串返回文件内容(文件无法找到,路径不完整,没有权限,长度大于max_allowed_packet会返回NULL)  

 85     UPDATE table_name SET blob_column=LOAD_FILE("/tmp/picture") WHERE id=1;

 86     

 87 #数学函数

 88     #1.ABS(N)  返回N的绝对值  

 89     SELECT ABS(2); 

 90     SELECT ABS(-32);

 91     #2.SIGN(N)  返回参数的符号(为-1、0或1)  

 92     SELECT SIGN(-32);    

 93     SELECT SIGN(0);    

 94     SELECT SIGN(234);   

 95     #3.MOD(N,M)   取模运算,返回N被M除的余数(同%操作符)    

 96     SELECT MOD(234, 10);    

 97     SELECT 234 % 10;    

 98     SELECT MOD(29,9);    

 99     #4.FLOOR(N)  返回不大于N的最大整数值  

100     SELECT FLOOR(1.23);    

101     SELECT FLOOR(-1.23);    

102    #5CEILING(N)  返回不小于N的最小整数值  

103     SELECT CEILING(1.23);  

104     SELECT CEILING(-1.23);      

105     #6.ROUND(N,D)  返回N的四舍五入值,保留D位小数(D的默认值为0)  

106     SELECT ROUND(-1.23);    

107     SELECT ROUND(-1.58);    

108     SELECT ROUND(1.58);    

109     SELECT ROUND(1.298, 1);    

110     SELECT ROUND(1.298, 0);    

111     #7.EXP(N)  返回值e的N次方(自然对数的底)  

112     SELECT EXP(2);    

113     SELECT EXP(-2);    

114     #8.LOG(N)  返回N的自然对数  

115     SELECT LOG(2);    

116     SELECT LOG(-2);    

117     #10.LOG10(N)  返回N以10为底的对数  

118     SELECT LOG10(2);    

119     SELECT LOG10(100);    

120     SELECT LOG10(-100);    

121     #11.POW(X,Y)    POWER(X,Y)    返回值X的Y次幂  

122     SELECT POW(2,2);    

123     SELECT POW(2,-2);    

124     #12.SQRT(N)  返回非负数N的平方根  

125     SELECT SQRT(4);    

126     SELECT SQRT(20);    

127     #13PI()    返回圆周率   

128     SELECT PI();    

129     #14.COS(N)  返回N的余弦值  

130     SELECT COS(PI());  

131     #15.SIN(N)  返回N的正弦值   

132     SELECT SIN(PI());    

133     #16.TAN(N)  返回N的正切值  

134     SELECT TAN(PI()+1);    

135     #17.ACOS(N)  返回N反余弦(N是余弦值,在-1到1的范围,否则返回NULL)  

136     SELECT ACOS(1);    

137     SELECT ACOS(1.0001);    

138     SELECT ACOS(0);    

139     #18.ASIN(N)  返回N反正弦值  

140     SELECT ASIN(0.2);    

141     SELECT ASIN('foo');    

142     #19.ATAN(N)  返回N的反正切值  

143     SELECT ATAN(2);    

144     SELECT ATAN(-2);    

145     #20.ATAN2(X,Y)    返回2个变量X和Y的反正切(类似Y/X的反正切,符号决定象限)  

146     SELECT ATAN(-2,2);    

147     SELECT ATAN(PI(),0);    

148     #21.COT(N)  返回X的余切  

149     SELECT COT(12);    

150     SELECT COT(0);    

151     #22.RAND()  RAND(N)    返回在范围0到1.0内的随机浮点值(可以使用数字N作为初始值)

152     SELECT RAND();    

153     SELECT RAND(20);    

154     SELECT RAND(20);    

155     SELECT RAND();    

156     SELECT RAND();    

157     #23.DEGREES(N)  把N从弧度变换为角度并返回  

158     SELECT DEGREES(PI());    

159     #24.RADIANS(N)  把N从角度变换为弧度并返回   

160     SELECT RADIANS(90);    

161     #25.TRUNCATE(N,D)    保留数字N的D位小数并返回  

162     SELECT TRUNCATE(1.223,1);    

163     SELECT TRUNCATE(1.999,1);    

164     SELECT TRUNCATE(1.999,0);    

165     #26.LEAST(X,Y,...)    返回最小值(如果返回值被用在整数(实数或大小敏感字串)上下文或所有参数都是整数(实数或大小敏感字串)则他们作为整数(实数或大小敏感字串)比较,否则按忽略大小写的字符串被比较)  

166     SELECT LEAST(2,0);    

167     SELECT LEAST(34.0,3.0,5.0,767.0);    

168     SELECT LEAST("B","A","C");    

169     #27.GREATEST(X,Y,...)    返回最大值(其余同LEAST())  

170     SELECT GREATEST(2,0);    

171     SELECT GREATEST(34.0,3.0,5.0,767.0);    

172     SELECT GREATEST("B","A","C");    

173 

174 #时期时间函数

175     #1.DAYOFWEEK(date)    返回日期date是星期几(1=星期天,2=星期一,……7=星期六,ODBC标准)  

176     SELECT DAYOFWEEK('1998-02-03');    

177     #2.WEEKDAY(date)    返回日期date是星期几(0=星期一,1=星期二,……6= 星期天)。

178     SELECT WEEKDAY('1997-10-04 22:23:00');    

179     SELECT WEEKDAY('1997-11-05');    

180     #3.DAYOFMONTH(date)    返回date是一月中的第几日(在1到31范围内)    

181     SELECT DAYOFMONTH('1998-02-03');    

182     #4.DAYOFYEAR(date)    返回date是一年中的第几日(在1到366范围内)    

183     SELECT DAYOFYEAR('1998-02-03');    

184     #5.MONTH(date)    返回date中的月份数值    

185     SELECT MONTH('1998-02-03');    

186     #6.DAYNAME(date)    返回date是星期几(按英文名返回)  

187     SELECT DAYNAME("1998-02-05");

188     #7.MONTHNAME(date)    返回date是几月(按英文名返回)  

189     SELECT MONTHNAME("1998-02-05");    

190     #8.QUARTER(date)    返回date是一年的第几个季度    

191     SELECT QUARTER('98-04-01');    

192     #9.WEEK(date,first)   返回date是一年的第几周(first默认值0,first取值1表示周一是周的开始,0从周日开始)  

193     SELECT WEEK('1998-02-20');    

194     SELECT WEEK('1998-02-20',0);    

195     SELECT WEEK('1998-02-20',1);    

196     #10.YEAR(date)    返回date的年份(范围在1000到9999)    

197     SELECT YEAR('98-02-03');    

198     #11.HOUR(time)    返回time的小时数(范围是0到23)   

199     SELECT HOUR('10:05:03');    

200     #12.MINUTE(time)    返回time的分钟数(范围是0到59)    

201     SELECT MINUTE('98-02-03 10:05:03');    

202     #13.SECOND(time)    返回time的秒数(范围是0到59)   

203     SELECT SECOND('10:05:03');    

204     #14.PERIOD_ADD(P,N)    增加N个月到时期P并返回(P的格式YYMM或YYYYMM)    

205     SELECT PERIOD_ADD(9801,2);    

206     #15.PERIOD_DIFF(P1,P2)    返回在时期P1和P2之间月数(P1和P2的格式YYMM或YYYYMM)  

207     SELECT PERIOD_DIFF(9802,199703);    

208     /*16.DATE_ADD(date,INTERVAL expr type)  

209         DATE_SUB(date,INTERVAL expr type)    

210         ADDDATE(date,INTERVAL expr type)    

211         SUBDATE(date,INTERVAL expr type)  

212         对日期时间进行加减法运算  (ADDDATE()和SUBDATE()是DATE_ADD()和DATE_SUB()的同义词,也可以用运算符+和-而不是函数  

213         date是一个DATETIME或DATE值,expr对date进行加减法的一个表达式字符串type指明表达式expr应该如何被解释  

214         [type值 含义 期望的expr格式]:  

215         SECOND 秒 SECONDS    

216         MINUTE 分钟 MINUTES    

217         HOUR 时间 HOURS    

218         DAY 天 DAYS    

219         MONTH 月 MONTHS    

220         YEAR 年 YEARS    

221         MINUTE_SECOND 分钟和秒 "MINUTES:SECONDS"    

222         HOUR_MINUTE 小时和分钟 "HOURS:MINUTES"    

223         DAY_HOUR 天和小时 "DAYS HOURS"    

224         YEAR_MONTH 年和月 "YEARS-MONTHS"    

225         HOUR_SECOND 小时, 分钟, "HOURS:MINUTES:SECONDS"    

226         DAY_MINUTE 天, 小时, 分钟 "DAYS HOURS:MINUTES"    

227         DAY_SECOND 天, 小时, 分钟, 秒 "DAYSHOURS:MINUTES:SECONDS" 

228         expr中允许任何标点做分隔符,如果所有是DATE值时结果是一个

229         DATE值,否则结果是一个DATETIME值)  

230         如果type关键词不完整,则MySQL从右端取值,DAY_SECOND因为缺少小时分钟等于MINUTE_SECOND)  

231         如果增加MONTH、YEAR_MONTH或YEAR,天数大于结果月份的最大天

232         数则使用最大天数)*/    

233     SELECT "1997-12-31 23:59:59" + INTERVAL 1 SECOND; 

234     SELECT INTERVAL 1 DAY + "1997-12-31";    

235     SELECT "1998-01-01" - INTERVAL 1 SECOND;    

236     SELECT DATE_ADD("1997-12-31 23:59:59",INTERVAL 1 SECOND);    

237     SELECT DATE_ADD("1997-12-31 23:59:59",INTERVAL 1 DAY);    

238     SELECT DATE_ADD("1997-12-31 23:59:59",INTERVAL "1:1" MINUTE_SECOND);    

239     SELECT DATE_SUB("1998-01-01 00:00:00",INTERVAL "11:1:1" DAY_SECOND);    

240     SELECT DATE_ADD("1998-01-01 00:00:00", INTERVAL "-110" DAY_HOUR);  

241     SELECT DATE_SUB("1998-01-02", INTERVAL 31 DAY);    

242     SELECT EXTRACT(YEAR FROM "1999-07-02");    

243     SELECT EXTRACT(YEAR_MONTH FROM "1999-07-02 01:02:03");    

244     SELECT EXTRACT(DAY_MINUTE FROM "1999-07-02 01:02:03");    

245     #17.TO_DAYS(date)    返回日期date是西元0年至今多少天(不计算1582年以前)  

246     SELECT TO_DAYS(950501);    

247     SELECT TO_DAYS('1997-10-07');    

248     #18.FROM_DAYS(N)    给出西元0年至今多少天返回DATE值(不计算1582年以前)   

249     SELECT FROM_DAYS(729669);    

250     /*19.DATE_FORMAT(date,format)    根据format字符串格式化date值  (在format字符串中可用标志符:

251      %M 月名字(January……December)

252      %W 星期名字(Sunday……Saturday)

253      %D 有英语前缀的月份的日期(1st, 2nd, 3rd, 等等。)

254      %Y 年, 数字, 4 位    

255      %y 年, 数字, 2 位    

256      %a 缩写的星期名字(Sun……Sat)    

257      %d 月份中的天数, 数字(00……31)  

258      %e 月份中的天数, 数字(0……31)   

259      %m 月, 数字(01……12)    

260      %c 月, 数字(1……12)    

261      %b 缩写的月份名字(Jan……Dec)    

262      %j 一年中的天数(001……366)    

263      %H 小时(00……23)    

264      %k 小时(0……23)    

265      %h 小时(01……12)    

266      %I 小时(01……12)    

267      %l 小时(1……12)    

268      %i 分钟, 数字(00……59)    

269      %r 时间,12 小时(hh:mm:ss [AP]M)    

270      %T 时间,24 小时(hh:mm:ss)    

271      %S 秒(00……59)    

272      %s 秒(00……59)    

273      %p AM或PM    

274      %w 一个星期中的天数(0=Sunday ……6=Saturday )    

275      %U 星期(0……52), 这里星期天是星期的第一天    

276      %u 星期(0……52), 这里星期一是星期的第一天    

277      %% 字符% ) */ 

278     SELECT DATE_FORMAT('1997-10-04 22:23:00','%W %M %Y');    

279     SELECT DATE_FORMAT('1997-10-04 22:23:00','%H:%i:%s');

280     SELECT DATE_FORMAT('1997-10-04 22:23:00','%D %y %a %d %m %b %j');    

281     SELECT DATE_FORMAT('1997-10-04 22:23:00','%H %k %I %r %T %S %w');    

282     #20.TIME_FORMAT(time,format)  和DATE_FORMAT()类似,但TIME_FORMAT只处理小时、分钟和秒(其余符号产生一个NULL值或0)  

283     #21.CURDATE()     CURRENT_DATE()  以'YYYY-MM-DD'或YYYYMMDD格式返回当前日期值(根据返回值所处上下文是字符串或数字)    

284     SELECT CURDATE();    

285     SELECT CURDATE() + 0;    

286     #22.CURTIME()    CURRENT_TIME()  以'HH:MM:SS'或HHMMSS格式返回当前时间值(根据返回值所处上下文是字符串或数字)      

287     SELECT CURTIME();    

288     SELECT CURTIME() + 0;    

289     #23.NOW()    SYSDATE()    CURRENT_TIMESTAMP()  以'YYYY-MM-DD HH:MM:SS'或YYYYMMDDHHMMSS格式返回当前日期时间(根据返回值所处上下文是字符串或数字)     

290     SELECT NOW();    

291     SELECT NOW() + 0;    

292     #24.UNIX_TIMESTAMP()    UNIX_TIMESTAMP(date)    返回一个Unix时间戳(从'1970-01-01 00:00:00'GMT开始的秒数,date默认值为当前时间)  

293     SELECT UNIX_TIMESTAMP();    

294     SELECT UNIX_TIMESTAMP('1997-10-04 22:23:00');    

295     #25.FROM_UNIXTIME(unix_timestamp)    以'YYYY-MM-DD HH:MM:SS'或YYYYMMDDHHMMSS格式返回时间戳的值(根据返回值所处上下文是字符串或数字)     

296     SELECT FROM_UNIXTIME(875996580);    

297     SELECT FROM_UNIXTIME(875996580) + 0;    

298     #26.FROM_UNIXTIME(unix_timestamp,format)    以format字符串格式返回时间戳的值  

299     SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(),'%Y %D %M %h:%i:%s %x');    

300     #27.SEC_TO_TIME(seconds)    以'HH:MM:SS'或HHMMSS格式返回秒数转成的TIME值(根据返回值所处上下文是字符串或数字)     

301     SELECT SEC_TO_TIME(2378);    

302     SELECT SEC_TO_TIME(2378) + 0;    

303     #28.TIME_TO_SEC(time)    返回time值有多少秒    

304     SELECT TIME_TO_SEC('22:23:00');    

305     SELECT TIME_TO_SEC('00:39:38');

306        

307 

308 #转换函数

309 #1.cast 用法:cast(字段 as 数据类型) [当然是否可以成功转换,还要看数据类型强制转化时注意的问题]

310 SELECT CAST(a AS UNSIGNED) AS b FROM cardserver WHERE ORDER BY b DESC;

311 #2.convertconvert(字段,数据类型)

312 SELECT CONVERT(a ,UNSIGNED) AS b FROM cardserver WHERE ORDER BY b DESC;
View Code

 

 

 

 

 

 

 

 

 

  

你可能感兴趣的:(mysql)