Sql字符串转日期格式的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Sql字符串转日期格式的问题相关的知识,希望对你有一定的参考价值。

一个存储过程mySP含@DateTimeColumn参数,格式smallDateTime,
预编译通过。右击该存储过程点执行存储过程测试生成以下sql:
USE [myDB]
GO
DECLARE @return_value int
EXEC @return_value = [dbo].[mySP]
@DateTimeColumn = N'2008-05-06'
SELECT 'Return Value' = @return_value
GO
提示:
消息 102,级别 15,状态 1,第 12 行
'6' 附近有语法错误。
这个@DateTimeColumn字段应如何输入?
另外@return_value = [dbo].[mySP]是什么意思?
为什么要DECLARE并SELECT @return_value?
原存储过程如下:
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
ALTER PROCEDURE [dbo].[mySP]
@Attrib bigint,
@SerialNoOrTime bigint,
@Market smallint,
@Label char(10),
@ExTime smalldatetime,
@Price real,
@Volume real,
@Amount real,
@FileTitle char(260),
@Length int
AS
BEGIN
SET NOCOUNT ON;
declare @sql char(1000)
set @sql=
@Attrib+','+
@SerialNoOrTime+','+
@Market+','+
@Label+','+
@ExTime+','+
@Price+','+
@Volume+','+
@Amount+','+
@FileTitle+','+
@Length
print @sql
END
各位右击存储过程,点“执行存储过程”看能否测试成功。
关键是ExTime如何赋值? 还有bigint类型的也无法赋值。

这样看来你这里问题还不止一个啊,首先存储过程写的就不对,应该这样:
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
alter PROCEDURE [dbo].[mySP]
@Attrib bigint,
@SerialNoOrTime bigint,
@Market smallint,
@Label char(10),
@ExTime smalldatetime,
@Price real,
@Volume real,
@Amount real,
@FileTitle char(260),
@Length int
AS
BEGIN
SET NOCOUNT ON;
declare @sql char(1000)
set @sql=
cast(@Attrib as varchar(20))+','+
cast(@SerialNoOrTime as varchar(20))+','+
cast(@Market as varchar(20))+','+
@Label+','+
convert(varchar(20),@ExTime,120)+','+
cast(@Price as varchar(20))+','+
cast(@Volume as varchar(20))+','+
cast(@Amount as varchar(20))+','+
@FileTitle+','+
cast(@Length as varchar(20))
print @sql
END

然后执行的时候应该给每一个参数赋值:

GO

DECLARE @return_value int

EXEC @return_value = [dbo].[mySP] 123,123,12,'asdf','2010-01-01',12.1,12.1,12.1,'asdf',23

SELECT 'Return Value' = @return_value

GO
参考技术A DECLARE @return_value int
DECLARE @DateTimeColumn varchar(50)
exec @return_value = [dbo].[mySP]
set @DateTimeColumn = '2008-05-06'
SELECT 'Return Value' = @DateTimeColumn
-------------------------------------------------
@return_value = [dbo].[mySP]是从“mySP”存储过程得到返回值赋给变量。
参考技术B 既然你要输出参数 就应该使用OUTPUT类型参数
你可以这样构造你的存储过程:
create proc dbo.mySP
@DateTimeColumn smallDateTime,
@return_value int output
as
begin
你的存储过程内容
end

下面是调用的过程
DECLARE @return_value int
EXEC [dbo].[mySP]
@DateTimeColumn = '2008-05-06',
@return_value output
SELECT 'Return Value' = @return_value

以上是关于Sql字符串转日期格式的问题的主要内容,如果未能解决你的问题,请参考以下文章

如何在EXCEL中将字符转成日期 如19970828转成1997-08-28

sql如何将字符串转为日期

sqlserver 字符串转日期

sql 中怎样让日期转变成字符串

sql字符串转换成日期

Oracle sql 错误 : ORA-01861: 文字与格式字符串不匹配和日期与字符串互转问题解决