SQL转换日期

时间:2019-01-03 12:34:36

标签: sql-server tsql

declare @vaultdate varchar(10)
set @vaultdate = convert(date, getdate())-1
print @vaultdate

我遇到错误

  

操作符类型冲突:日期与int不兼容

有人可以看到我做错了吗?谢谢

4 个答案:

答案 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,我们也许可以提供更好的建议。