当前位置:
文档之家› MSSQL-MYSQL语法差异
MSSQL-MYSQL语法差异
• MYSQL
date_add(date,interval expression type) 增加一小时 date_add(Now(),interval 1 hour) 增加一天 date_add(Now(),interval 1 day) 增加一年 date_add(Now(),interval 1 year) 更多interval参数去网上搜索
函数差异
• MSSQL
datepart(interval,date) datename(interval,date) interval参数值
yy yyyy m mm dy y qq q wk ww dw w d hh h mi n ss s mcs 取得年份 月数 一年中的第几天 一年中的第几季度 一年中的第几周 一周中的第几天 日 时 分 秒 微秒
MSSQL与MYSQL
• 查询差异 • 数据更新差异 • 常用函数差异
查询差异-取指定记录数
• MSSQL 使用TOP命令:
select top 10 * from A
• MYSQL 使用limit命令:
select * from A limit 10; //查询前10条
select * from A limit 3,3; //查第3至6条 select * from A limit 4,10; //查询第4至14条
函数差异--• MSSQL
select substring(string,start) select substring(string,start,length)
截取字符串
• MYSQL
select substr(string,start) select substr(string,start,length) select substring_index('abc:efg: hij',':',2) 截取字符串第二个冒号之前的字符 串 如果count为正数,取左边值 如果count为负数,取右边值
---插入数据
• MYSQL
insert into A(A1,A2)values ('aa1','aa2'),('bb1','bb2')
函数差异
• MSSQL
取当月第一天的时间: select dateadd(dd,day(getdate())+1,getdate()) 取当月最后一天的时间: select dateadd(dd,day(dateadd(m,1,getdate())) ,dateadd(m,1,getdate()))
---日期指定内容
• MYSQL
dayofyear(date) 一年中的第几天 dayofmonth(date) 一月中的第几天 dayofweek(date) 一星期中的第几天 weekofyear(date) 一年中的第几周 dayname(date) 星期几(英文结果) monthname(date) 月份 year(date) 年份 weekday(date) 星期几(数字结果) week(date) 一年中的第几周 hour(time) 小时 minute(time) 分钟 second(time) 秒数
• MYSQL
无
A2 b b2 yy
A3 b b3 zz
在表A中存在,但在表B中不存在的结果
查询差异---并操作
共同点:使用Union查询
函数差异-字符串长度
• MSSQL
select Len('abcdefg') 长度为7 select len('Game游戏&h('abcdefg') 长度为7 select length('Game游戏') 长度为8 一个中文字符长度为2 select char_length('Game游戏') 长度为6 一个中文字符为1
---月的最后一天
• MYSQL
last_day(date)
函数差异
• MSSQL
convert(datetype,date,style) 如: convert(varchar(12),getdate(),120) convert(varchar(8),getdate(),112)
---日期转换函数
函数差异
• MSSQL
去左边空格 select LTrim(' abc') 去右边空格 select RTrim('abc ')
---去除空格或字符
• MYSQL
去左边空格 select LTrim(' abc') 去右边空格 select RTrim('abc ') 去左右两边空格 select Trim(' abc ') 去左边字符 select LTrim(' .abc','.') 去右边字符 select RTrim('abc. ','.')
函数差异
• MSSQL
ISNULL(expr1,expr2) 如果expr1为空,则返回expr2
---空值的判断
• MYSQL
IFNULL(expr1,expr2) 如果expr1为空,则返回expr2
ISNULL(expr1) 如果为空,则返回0 如果不为空,则返回1
函数差异
• MSSQL
datediff(d,starttime,endtime)
• MYSQL
date_format(date,fmt) 如: date_format(Now(),'%y%m%d') 更多fmt参数去网上搜索 例如: mysql> select date_format(now(),'%Y-%m-%d
%h:%m:%s');
更多style参数去网上搜索
+----------------------------------------+ | date_format(now(),'%Y-%m-%d %h:%m:%s') | +----------------------------------------+ | 2016-01-20 03:01:42 | +----------------------------------------+ 1 row in set (0.00 sec)
A1 a a1 xx A2 a a2 yy A3 a a3 zz A1 b b1 xx
• MYSQL
无
A2 b b2 yy
A3 b b3 zz
xx
yy
zz
查询差异-差操作
• MSSQL
select A1,A2,A3 from A MINUS select B1,B2,B3 from B
A1 a a1 xx A2 a a2 yy A3 a a3 zz a a1 a a2 A1 b b1 xx a a3
---插入数据
• MYSQL
insert into A(A1,A2)values ('aa1','aa2'),('bb1','bb2')
更新差异
• MSSQL
insert into A (A1,A2)values('aa1','aa2') insert into A (A1,A2)values('bb1','bb2')
查询差异-使用别名分组
• MSSQL
select A1 as Lvl from A group by A1
• MYSQL
select A1 as Lvl from A group by Lvl;
查询差异-交操作
• MSSQL
select A1,A2,A3 from A intersect select B1,B2,B3 from B
• MSSQL
当前时间: select getdate()
---取得时间
• MYSQL 当前时间(YYYY-MM-DD HH:MM:SS): select now(),sysdate(); 当前日期(YYYY-MM-DD): select current_date() 当前时间(HH:MM:SS) select current_time()
---月份的差异
• MYSQL
TIMESTAMPDIFF(SECOND,starttime,endtim e) 求月份差异 months_between(system,add_month(syste m,-1))
更新差异
• MSSQL
insert into A (A1,A2)values('aa1','aa2') insert into A (A1,A2)values('bb1','bb2')
函数差异
• MSSQL
dateadd(datepart,number,date) 增加一小时 dateadd(HH,1,getdate()) 增加一天 dateadd(DD,1,getdate()) 增加一年 dateadd(YY,1,getdate()) 更多datepart参数去网上搜索
---日期时间加减运算
---取指定字符位置
• MYSQL
返回子串substring在指定字符串 string中第一次出现的位置 instr(string,substring) position(substring in string) instr('sql','microsoft sql server') 结果:11