我遇到这个问题,当我将字符转换为日期格式时,SQL要求我输入别名,这是我的查询:
declare @dateTarget char(8) = '20130613'
declare @dateTarget2 char(8) = '20180608'
declare @dateNow as date = GETDATE()
IF CAST(CONVERT(DATE,
LEFT(@dateTarget, 4) + SUBSTRING(@dateTarget, 5, 2) + RIGHT(@dateTarget, 2))) >= CAST(@dateNow AS DATE)
BEGIN
PRINT 'Target cannot be greater than DateNow.'
END
ELSE IF CAST(CONVERT(DATE, LEFT(@dateTarget2, 4) + SUBSTRING(@dateTarget2, 5, 2) + RIGHT(@dateTarget2, 2))) >= CAST(@dateNow AS DATE)
BEGIN
PRINT 'Target2 cannot be greater than DateNow.'
END
ELSE
BEGIN
PRINT 'ok'
END
这些是我得到的错误:
消息1035,级别15,状态10,第5行
'CAST'附近的语法不正确,预期为'AS'。消息156,级别15,状态1,第9
行在关键字“ ELSE”附近的语法错误。消息1035,级别15,状态10,第9
行在“ CAST”附近的语法不正确,预期为“ AS”。消息156,级别15,状态1,第13行
关键字“ ELSE”附近的语法错误。
如果要将字符串转换为日期,请使用Cast或Convert
select CAST(@dateTarget as date)
select CONVERT(date, @dateTarget)
SQL Server可以将字符串隐式转换为日期(尽管我建议进行显式转换)
declare @dateTarget char(8) = '20130613'
declare @dateTarget2 char(8) = '20180608'
declare @dateNow as date = GETDATE()
IF @dateTarget >= @dateNow
BEGIN
print 'Target cannot be greater than DateNow.'
END
ELSE IF @dateTarget2 >= @dateNow
BEGIN
print 'Target2 cannot be greater than DateNow.'
END
ELSE
BEGIN
print 'ok'
END
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句