use*_*331 2 sql t-sql sql-server datetime stored-procedures
我有这个存储过程:
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
Run Code Online (Sandbox Code Playgroud)
当我尝试执行它时:
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
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
将数据类型varchar转换为datetime时出错。
最安全的方法是提供与文化无关的ISO 8601日期:
yyyy-mm-ddThh:mm:ss [.mmm]
使用ISO 8601格式的优点是它是国际标准。此外,使用此格式指定的日期时间值是明确的。同样,此格式不受SET DATEFORMAT或SET LANGUAGE设置的影响。
DECLARE @return_value int
EXEC @return_value = [dbo].[PostScheduledTasks]
@actualStart = N'2016-03-08T08:00:00',
@actualFinish = N'2016-03-08T16:00:00',
@actualEndDate = N'2016-03-08T16:00:00',
@UserDate1 = N'2016-01-27T08:00:00',
@IsCompleted = 1,
@PercentComplete = 1,
@UStmp = N'jsuske',
@SchedukeTaskID = 597295,
@SortOrder = 19
SELECT 'Return Value' = @return_value
Run Code Online (Sandbox Code Playgroud)
或者,您必须检查SET LANGUAGE/DATEFORMAT
并以正确的格式提供日期。
归档时间: |
|
查看次数: |
3951 次 |
最近记录: |