0

刚从 SQL 开始,所以这里可能有一个非常简单的答案,但我无法从谷歌搜索中弄清楚我需要做什么。

我正在使用的数据库中有一个名为 dt_char_sp 的存储过程 - 简单地说,参数是整数形式的日期和时间,并且存储过程很好地格式化了它们。我希望它可以像这样工作:

EXEC dt_char_sp 20130416, 024356
go

输出:

04/06/2013 02:43:56

除了输出没有发生!我看到有一个变量声明为“@datetime datetime=NULL OUTPUT”,最终@datetime 变量填充了格式化字符串,但我想知道是否有办法获取这个输出变量?

4

4 回答 4

1

如果没有实际看到存储过程,我们无法确定,但听起来它正在使用输出参数。

DECLARE @retval As DATETIME

EXEC dt_char_sp 20130416, 024356, @datetime=@retval OUTPUT

PRINT @retval
go

从客户端代码也有一种等效的方法来执行此操作。

于 2013-04-16T21:51:04.020 回答
1

您需要使用Select 语句

在查询结束时,只需选择所需的输出变量,如下所示:

SELECT @datetime

另一种方法是使用输出参数。像这样声明:

@datetime DateTime OUTPUT;
于 2013-04-16T19:36:19.833 回答
0

您确定您正在做某事以获得返回值吗?如果没有,您可以选择变量

select @datetime
于 2013-04-16T19:25:22.643 回答
-1

请不要用像格式化字符串这样的蹩脚的东西给 SQL Server 带来负担。对于那种事情来说太重要了。我最近经常看到这种情况,这是一个坏习惯。

请为此使用您的客户端格式化工具...

类似的东西(对于 UNIX 类型的日期)

DateTime dt = new DateTime("1/1/1970").AddDays(myIntDate);

Console.Writeln(dt.ToString("mm/dd/yyyy"));

这有很多原因 - 性能是最重要的。您已经拥有所需的所有数据,当您真的不需要任何东西时,没有理由往返于非常昂贵的服务器。所有计算机都可以格式化日期,不要使用服务器。

顺便说一句,这是正确的答案。我认为 Stack Overflow 不应该成为如果有人问如何从桥上跳下来,我们就直接告诉他们的地方。当有人问如何使用错误的方法完成某事时,我们应该告诉他们正确的方法。

于 2013-04-16T19:32:50.293 回答