SQL Server MySql 语法和关键字的区别
——用于SQLServer到MySql的转换
(1) mysql的ifnull()函数对应sql的isnull()函数;
(2) mysql的存储过程中变量的定义去掉@;
(3) mysql的每句结束要用";"
(4) SQLServer存储过程的AS在MySql中需要用begin .....end替换
(5) 字符串连接用concat()函数;
如 SQLServer: Temp=’select * from ’+’tablename’+…+…
      MySql:Temp=concat(’select * from’, ’tablecname’,…,…)
(6) mysql的uuid()对应sql的GUID();
(7) MySql的out对应SQLServer的output,且mysql 的out要放在变量的前面,SQLServer的output放在变量后面
MySql out,in,inout的区别——
MySQL 存储过程 in 参数:跟 C 语言的函数参数的值传递类似, MySQL 存储过程内部可能会修改此参数,但对 in 类型参数的修改,对调用者(caller)来说是不可见的(not visible)。
MySQL 存储过程 out 参数:从存储过程内部传值给调用者。在存储过程内部,该参数初始值为 null,无论调用者是否给存储过程参数设置值。
MySQL 存储过程 inout 参数跟 out 类似,都可以从存储过程内部传值给调用者。不同的是:调用者还可以通过 inout 参数传递值给存储过程。
8MySQLif语句为
if  (条件)  then
end if;
或者
    If  (条件) then
    Else
    End if
或者
    If(条件)then
    Elseif    (注意不能写成 Else if )
    Elseif
    …
    End if
9MysqlExecute对应SqlServerexec;
    (注意:必须像下面这样调用)
    Set @cnt=’select * from 表名’;
    Prepare str from @cnt;
    Execute str;
(10)MySql存储过程调用其他存储过程用call
    Call 函数名(即SQLServer的存储过程名)(’参数1’,’参数2’,……)
(11) mysql的日期
    获得当前日期函数:curdate()current_date()
    获得当前时间函数:curtime();
    获得当前日期+时间:now();
函数:dayofweek(), dayofmonth(), dayofyear()分别返回日期参数,在一周、一月、一年中的位置。
(注:周日=1,周一=2,周二=3mysql存储过程使用……)
    返回本月的天数:select day(last_day(now()));
   
    MySQL 为日期增加一个时间间隔:date_add()
    select date_add(CURRENT_DATE(),interval ‘要增加的天数’ day) as Fdate
    MySQL 为日期减去一个时间间隔:date_sub()
    select date_sub('1998-01-01 00:00:00', interval '1 1:1:1' day_second);
    MySQL 日期、时间相减函数:datediff(date1,date2), timediff(time1,time2)
MySQL 拼凑日期、时间函数:makdedate(year,dayofyear), maketime(hour,minute,second)
例:select makedate(2001,31); -- '2001-01-31'
select makedate(2001,32); -- '2001-02-01'
本周时间(起始)
select date_sub(CURRENT_DATE(),interval dayofweek(curdate())-2 day) as Fdate
本周时间(结束)
select date_add(CURRENT_DATE(),interval dayofweek(curdate())+3 day) as Fdate
上周时间(起始)
select date_sub(CURRENT_DATE(),interval dayofweek(curdate())+5 day) as Fdate
上周时间(结束)
select date_sub(CURRENT_DATE(),interval dayofweek(curdate())-1 day) as Fdate
本月时间(起始)
select DATE_SUB(CURDATE(),INTERVAL DAY(CURDATE())-1 DAY) as Fdate
本月时间(结束)
Select date_add(current_date(),interval day(last_day(CURDATE())) -day(CURDATE()) day) as Fdate
上月时间(起始)
select DATE_SUB(DATE_SUB(CURDATE(),INTERVAL DAY(CURDATE()) DAY),interval day(last_day(DATE_SUB(CURDATE(),INTERVAL DAY(CURDATE()) DAY)))-1 day) as Fdate
上月时间(结束)
select DATE_SUB(CURDATE(),INTERVAL DAY(CURDATE()) DAY) as Fdate
今年时间(起始)
select makedate(year(curdate()),1) as FDate
今年时间(结束)
select DATE_SUB(makedate(year(curdate())+1,1) ,INTERVAL 1 day) as Fdate
去年时间(起始)
select makedate(year(curdate())-1,1) as Fdate
去年时间(结束)
select DATE_SUB(makedate(year(curdate()),1) ,INTERVAL 1 day) as FDate
DATE_FORMAT(date,format):根据format字符串格式化date值。下列修饰符可以被用在format字符串中
%M    月名字(January……December)     
      %W    星期名字(Sunday……Saturday)     
      %D    有英语前缀的月份的日期(1st,  2nd,  3rd,  等等。)   
      %Y    数字,  4     
      %y    数字,  2     
      %a    缩写的星期名字(Sun……Sat)     
      %d    月份中的天数数字(00……31)     
      %e    月份中的天数数字(0……31)     
      %m    数字(01……12)     
      %c    数字(1……12)     
      %b    缩写的月份名字(Jan……Dec)     
      %j    一年中的天数(001……366)     
      %H    小时(00……23)     
      %k    小时(0……23)     
      %h    小时(01……12)     
      %I    小时(01……12)     
      %l    小时(1……12)     
      %i    分钟数字(00……59)     
      %r    时间,12  小时(hh:mm:ss  [AP]M)     
      %T    时间,24  小时(hh:mm:ss)     
      %S    (00……59)     
      %s    (00……59)     
      %p    AMPM     
%w    一个星期中的天数(0=Sunday  ……6=Saturday     
      %U    星期(0……52),  这里星期天是星期的第一天   
      %u    星期(0……52),  这里星期一是星期的第一天   
      %%    一个文字“%”   
例:所有的其他字符不做解释被复制到结果中。   
      mysql> select  DATE_FORMAT('1997-10-04  22:23:00',  '%W  %M  %Y'); 
    ->'Saturday  October  1997' 
      mysql>select  DATE_FORMAT('1997-10-04  22:23:00',  '%H:%i:%s'); 
->  '22:23:00' 
mysql>select  DATE_FORMAT('1997-10-04  22:23:00',  '%D  %y  %a  %d  %m  %b  %j'); 
->'4th  97  Sat  04  10  Oct  277' 
mysql>select  DATE_FORMAT('1997-10-04  22:23:00',  '%H  %k  %I  %r  %T  %S      %w'); 
->'22  22  10  10:23:00  PM  22:23:00  00  6' 
12MySql存储过程中没有return函数,在MySql中可以用循环和out参数代替
    If EXISTS(SELECT * FROM T_Chance WHERE FCustID=CostomerID)  return 0
改写为:
    (在参数中定义一个out变量:out temp varchar(100);

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。