使用DECLARE和IF Else的MySQl查询导致错误
我正在将mssql查询转换为MysQL,但我得到了一些错误,比如Declare不在正确的位置,或者它不在正确的位置。下面是我的sql查询:使用DECLARE和IF Else的MySQl查询导致错误,mysql,sql-server,Mysql,Sql Server,我正在将mssql查询转换为MysQL,但我得到了一些错误,比如Declare不在正确的位置,或者它不在正确的位置。下面是我的sql查询: declare v_StartDateIn varchar(25) default '@1' declare v_EndDateIn varchar(25) default '@2' IF (v_StartDateIn = '') OR (v_StartDateIn is null) OR (v_StartDateIn = '$1') THEN SET
declare v_StartDateIn varchar(25) default '@1'
declare v_EndDateIn varchar(25) default '@2'
IF (v_StartDateIn = '') OR (v_StartDateIn is null) OR (v_StartDateIn = '$1') THEN SET v_StartDateIn = concat(left(DATE_FORMAT (NOW(), 126),7),'-01T00:00:00');
END IF;
IF (v_EndDateIn = '') OR (v_EndDateIn is null) OR (v_EndDateIn = '$2') THEN SET v_EndDateIn = timestampadd(Month,1,v_StartDateIn);
END IF;
declare v_StartDate datetime(3) default date_format(v_StartDateIn,126);
declare v_EndDate datetime(3) default date_format(v_EndDateIn,126);
declare v_Limit varchar(20) default 'Limit';
SELECT
concat(left(date_format(sl.StartStateDate,120),4)
,' ',
left(date_format(sl.StartStateDate,107),3)
,' ',
substring(date_format(sl.StartStateDate,120),9,2)) as Date
,Left(format(sl.StartStateDate,'D'),3) as Day
,substring(date_format(sl.StartStateDate,120),12,5) as Start
,substring(date_format(sl.EndStateDate,120),12,5) as End
FROM DataLogs sl
WHERE 1=1
and sl.StartStateDate >= v_StartDate
and sl.EndStateDate < v_EndDate
声明v_StartDateIn varchar(25)默认值'@1'
声明v_EndDateIn varchar(25)默认值'@2'
如果(v_StartDateIn='')或(v_StartDateIn为空)或(v_StartDateIn='$1'),则设置v_StartDateIn=concat(左(日期格式(现在(),126),7),'-01T00:00:00');
如果结束;
如果(v_EndDateIn='')或(v_EndDateIn为空)或(v_EndDateIn='$2'),则设置v_EndDateIn=timestampadd(月,1,v_StartDateIn);
如果结束;
声明v_StartDate datetime(3)默认日期格式(v_StartDateIn,126);
声明v_EndDate datetime(3)默认日期格式(v_EndDateIn,126);
声明v_Limit varchar(20)默认“Limit”;
挑选
concat(左(日期格式(sl.StartStateDate,120),4)
,' ',
左(日期格式(sl.StartStateDate,107),3)
,' ',
子字符串(日期格式(sl.StartStateDate,120),9,2))作为日期
,左(格式(sl.StartStateDate,'D'),3)为天
,子字符串(日期格式(sl.StartStateDate,120),12,5)作为开始
,子字符串(日期格式(sl.EndStateDate,120),12,5)作为结束
从数据日志
其中1=1
和sl.StartStateDate>=v_StartDate
和sl.EndStateDate
有人能帮我在MySQL中如何使用上述查询吗。- 申报
SET @v_StartDateIn = 'value';
- IF-THEN-ENDIF
这是MySQL脚本的一个问题。脚本中不能使用所有这些(IF、CASE、LOOP…)流控制语句。它们只能用于源对象[存储过程/函数、触发器、事件]。是否会导致错误?什么错误?