为什么我总是有“错误”,而从“ if-else”中什么也没有?
DECLARE @Date DATE = '2015-01-01'
BEGIN TRY
DECLARE @ROZNICA AS INT;
SET @ROZNICA = DATEDIFF(day, @Date, getdate());
IF @ROZNICA = 0
BEGIN
PRINT 'Data podana w parametrze jest datą bieżącą.';
END;
ELSE IF @ROZNICA > 0
BEGIN
PRINT 'Między datą obecną a datą ' + getdate() + ' jest ' + @ROZNICA + ' dni różnicy.';
END;
ELSE
BEGIN
PRINT 'Data podana w parametrze jest większa od bieżacej.';
END;
END TRY
BEGIN CATCH
PRINT 'Error';
END CATCH;
我希望从If Else语句中显示一些内容
答案 0 :(得分:1)
只需更改
'Między datą obecną a datą ' + getdate() + ' jest ' + @ROZNICA + ' dni różnicy.';
与
PRINT concat('Między datą obecną a datą ', getdate(), ' jest ', @ROZNICA, ' dni różnicy.');
之所以会这样,是因为将datetime转换为varchar时出错。 因此您的代码将是
DECLARE @Date DATE = '2015-01-01'
BEGIN TRY
DECLARE @ROZNICA AS INT;
SET @ROZNICA = DATEDIFF(day, @Date, getdate());
IF @ROZNICA = 0
BEGIN
PRINT 'Data podana w parametrze jest datą bieżącą.';
END --Remove ; from here
ELSE IF @ROZNICA >0
BEGIN
PRINT concat('Między datą obecną a datą ', getdate(), ' jest ', @ROZNICA, ' dni różnicy.');
END -- Remove ; from here
ELSE
BEGIN
PRINT 'Data podana w parametrze jest większa od bieżacej.';
END;
END TRY
BEGIN CATCH
PRINT 'Error';
END CATCH;
GO
答案 1 :(得分:0)
未经转换,您无法将日期或整数与varchar并置,因此您需要:
PRINT 'Między datą obecną a datą ' + cast(getdate() as varchar(10)) + ' jest ' + cast( @ROZNICA as varchar(5))+ ' dni różnicy.';