Sql server SQL转换日期

Sql server SQL转换日期,sql-server,tsql,Sql Server,Tsql,我犯了个错误 操作数类型冲突:日期与int不兼容 有人能看出我做错了什么吗?谢谢您有一个括号错误,并且您需要将变量声明为datetime。您甚至不需要转换: declare @vaultdate varchar(10) set @vaultdate = convert(date, getdate())-1 print @vaultdate 您有1个括号错误,还需要将变量声明为datetime。您甚至不需要转换: declare @vaultdate varchar(10) set @vault

我犯了个错误

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


有人能看出我做错了什么吗?谢谢

您有一个括号错误,并且您需要将变量声明为
datetime
。您甚至不需要转换:

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

您有1个括号错误,还需要将变量声明为
datetime
。您甚至不需要转换:

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

您可能正在使用SQL Server。如果要处理日期,请使用日期及其功能:

declare @vaultdate datetime
set @vaultdate = getdate()-1
print @vaultdate

您可能正在使用SQL Server。如果要处理日期,请使用日期及其功能:

declare @vaultdate datetime
set @vaultdate = getdate()-1
print @vaultdate

我已经更新了查询,这将为您提供yyyy-mm-dd格式

declare @vaultdate date;
set @vaultdate = dateadd(day, -1, convert(date, getdate()));

print @vaultdate;

我已经更新了查询,这将为您提供yyyy-mm-dd格式

declare @vaultdate date;
set @vaultdate = dateadd(day, -1, convert(date, getdate()));

print @vaultdate;

Gordon Linoff在使用日期数据类型处理日期时是完全正确的。使用正确的数据类型是良好SQL设计的基础之一

如果您需要将日期转换为字符串,则应在使用点(即表示层)执行此操作,否则您可以将日期转换为varchar表示,然后表示层会再次将其转换为单独的格式,因为需求发生了变化

如果你一定要使用varchar,那么只需在gordon非常正确的答案中添加几行即可

declare @vaultdate varchar(12)

set @vaultdate = getdate()-1

print CAST(convert(varchar,@vaultdate,20) AS DATE)
这里有一个关于日期格式的好资源:


如果您能告诉我们为什么需要varchar,我们可能会提供更好的建议。

当使用日期数据类型处理日期时,Gordon Linoff是完全正确的。使用正确的数据类型是良好SQL设计的基础之一

如果您需要将日期转换为字符串,则应在使用点(即表示层)执行此操作,否则您可以将日期转换为varchar表示,然后表示层会再次将其转换为单独的格式,因为需求发生了变化

如果你一定要使用varchar,那么只需在gordon非常正确的答案中添加几行即可

declare @vaultdate varchar(12)

set @vaultdate = getdate()-1

print CAST(convert(varchar,@vaultdate,20) AS DATE)
这里有一个关于日期格式的好资源:


如果您能告诉我们为什么需要varchar,我们可能会提供更好的建议。

这是为哪个RDBMS设计的?请添加一个标记来指定您是在使用
mysql
postgresql
sqlserver
oracle
还是
db2
——还是完全使用其他东西。嗯?你的代码真的很混乱。您有混合字符串、整数和日期。这是用于哪个RDBMS的?请添加一个标记来指定您是在使用
mysql
postgresql
sqlserver
oracle
还是
db2
——还是完全使用其他东西。嗯?你的代码真的很混乱。您混合了字符串、整数和日期。这是可行的,但我使用@vaultdate作为varchar(10),那么我们如何纠正这一点,非常感谢。不要在字符串中存储日期值。这是一个不好的SQL编写习惯。我理解,但我需要将其用作varchar。你能帮我吗。Thanks@ngoc . . . 你应该问另一个问题来解释你到底想做什么。@ngoc所以你真正的问题是“如何以特定的字符串格式获取昨天的日期”(请指定确切的格式)。我建议试着用这个短语在网上搜索。很有可能这是一个错误,并且不同的方法更适合您的目标。这是可行的,但我使用@vaultdate作为varchar(10),那么我们如何更正此错误,非常感谢。不要将日期值存储在字符串中。这是一个不好的SQL编写习惯。我理解,但我需要将其用作varchar。你能帮我吗。Thanks@ngoc . . . 你应该问另一个问题来解释你到底想做什么。@ngoc所以你真正的问题是“如何以特定的字符串格式获取昨天的日期”(请指定确切的格式)。我建议试着用这个短语在网上搜索。这很有可能是一种新的方法,不同的方法更适合您的目标。它可以工作,但需要YY-mm-dd格式。请帮忙。thanksit可以工作,但需要yyyy-mm-dd格式。请帮忙。谢谢