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

 

 

 

 

 

 

 

 

 

  

posted @ 2014-03-29 17:32  瀞默  阅读(233)  评论(0编辑  收藏  举报