declare @vaultdate varchar(10)
set @vaultdate = convert(date, getdate())-1
print @vaultdate
我遇到错误
操作符类型冲突:日期与int不兼容
有人可以看到我做错了吗?谢谢
答案 0 :(得分:2)
大概是您在使用SQL Server。如果要使用日期,请使用日期及其功能:
declare @vaultdate date;
set @vaultdate = dateadd(day, -1, convert(date, getdate()));
print @vaultdate;
答案 1 :(得分:0)
您有1个括号错误,并且还需要将变量声明为datetime
。您甚至不需要转换:
declare @vaultdate datetime
set @vaultdate = getdate()-1
print @vaultdate
答案 2 :(得分:0)
我已更新查询,这将为您提供yyyy-mm-dd格式
声明@vaultdate varchar(12)
set @vaultdate = getdate()-1
打印CAST(按日期转换(varchar,@ vaultdate,20))
答案 3 :(得分:0)
使用日期数据类型处理日期时,Gordon Linoff是完全正确的。使用正确的数据类型是良好的SQL设计的基础之一。
如果需要将日期转换为字符串,则应在使用时即表示层进行操作,否则最终可以将日期转换为varchar进行显示,然后表示层再次将其转换为单独的格式,因为要求已更改。
如果您绝对必须使用varchar,则只需向Gordons非常正确的答案添加几行即可。
declare @vaultdatestring varchar(10);
declare @vaultdate date;
set @vaultdate = dateadd(day, -1, convert(date, getdate()));
print @vaultdate;
set @vaultdatestring = convert(varchar(10), @vaultdate,103)
print @vaultdatestring;
这里有一个很好的日期格式资源:Date and Time Conversions Using SQL Server
如果您可以告诉我们为什么需要varchar,我们也许可以提供更好的建议。