【发布时间】:2016-06-22 20:33:32
【问题描述】:
我有这个存储过程:
ALTER PROCEDURE [dbo].[PostScheduledTasks]
@actualStart datetime = NULL,
@actualFinish datetime = NULL,
@actualEndDate datetime = NULL,
@UserDate1 datetime = NULL,
@IsCompleted bit = 0,
@PercentComplete float = 0.0,
@UStmp varchar(10) = NULL,
@SchedukeTaskID int = 0,
@SortOrder int = 0
AS
BEGIN
SET NOCOUNT ON;
-- Insert statements for procedure here
UPDATE ScheduleTasks
SET ActualStart = @actualStart,
ActualFinish = @actualFinish,
ActualEndDate = @actualEndDate,
UserDate1 = @UserDate1,
IsCompleted = @IsCompleted,
PercentComplete = @percentComplete,
UStmp = @UStmp
WHERE
ScheduleTaskID = @SchedukeTaskID
AND SortOrder = @SortOrder
END
当我尝试执行它时:
DECLARE @return_value int
EXEC @return_value = [dbo].[PostScheduledTasks]
@actualStart = N'08-03-2016 8:00:00 AM',
@actualFinish = N'08-03-2016 4:00:00 PM',
@actualEndDate = N'08-03-2016 4:00:00 PM',
@UserDate1 = N'27-01-2016 8:00:00 AM',
@IsCompleted = 1,
@PercentComplete = 1,
@UStmp = N'jsuske',
@SchedukeTaskID = 597295,
@SortOrder = 19
SELECT 'Return Value' = @return_value
GO
我得到这个错误:
将数据类型 varchar 转换为 datetime 时出错。
【问题讨论】:
-
检查您的 ScheduleTasks 表以确保 ActualStart、ActualFinish 和 ActualEndDate 实际上是数据库中的日期时间列。
-
它在
N'27-01-2016 8:00:00 AM'条目上失败——当您使用 12 小时时间时,SQL 服务器可能期望MM/dd,而不是dd-MM。
标签: sql sql-server tsql datetime stored-procedures