2

我有一个这样的存储过程:

ALTER procedure [dbo].[startandenddtime]
@startdate nvarchar(100)
as begin 
declare @date3 nvarchar(100) = cast(CONVERT(varchar(100), @startdate + ' 16:59:59',      120) as datetime)
select date3  as startdate
end

如果我将 startdate 作为 2013-05-08 传递,我将输出为: 在此处输入图像描述 但我想输出为2013-05-08 16:59:59.000..所以我如何转换这种格式是我可以存储在 nvarchar varibale 中的日期时间

4

5 回答 5

2

像这样试试

 DECLARE @StartDate NVARCHAR(100)='2013-05-08'
 SELECT CONVERT(VARCHAR,@StartDate+'16:59:59', 121)

更多的

SQL小提琴

于 2013-08-26T10:15:14.493 回答
2

试试这个

ALTER procedure [dbo].[startandenddtime]
@startdate nvarchar(100)
as begin 
declare @date3 nvarchar(100) = cast(CONVERT(VARCHAR(24),@startdate ,121)) as datetime)
select date3  as startdate
end

有关更多详细信息,请参见http://technet.microsoft.com/en-us/library/ms187928.aspx

于 2013-08-26T10:15:29.220 回答
0

试试这个

Select cast(CONVERT(varchar(100), @startdate + ' 16:59:59') as date)

或者

Select cast(CONVERT(varchar(100), @startdate + ' 16:59:59') as datetime)
于 2013-08-26T10:12:15.800 回答
0

只是不要将 varchar 值转换为 datetime

编辑:如果您不明白我在评论中的意思:

convert(varchar, convert(datetime, @startdate + ' 16:59:59', 120), 120)
于 2013-08-26T10:13:50.060 回答
0

试试这个 :

Declare @dt varchar(20);
Declare @startdate varchar(20)='2013-05-08';
SET @dt= CONVERT(VARCHAR(20), CONVERT(datetime,@startdate+' 16:59:59'), 100)
Select @dt;
于 2013-08-26T10:25:50.097 回答