从nvarchar转换为时间格式失败?

时间:2013-05-15 13:02:14

标签: sql-server stored-procedures type-conversion

我正在尝试从nvarchar转换为时间,但我从nvarchar转换为日期和/或时间失败的异常。 这是我的存储过程:

USE [groep2_festivals]
GO
/****** Object:  StoredProcedure [dbo].[AddBandFestival]    Script Date: 15-05-13 2:52:38 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:      Robbie Vercammen
-- Create date: 2013-05-14
-- Description: Inserts a new record into the bandsperfestival table
-- =============================================
ALTER PROCEDURE [dbo].[AddBandFestival]
    (
    @festId int,
    @bandId int,
    @podId int,
    @date nvarchar,
    @hour nvarchar
    )
AS
BEGIN
    INSERT INTO bandsperfestival
    (fest_id, band_id, pod_id, datum, uur)
    VALUES (@festId, @bandId, @podId, @date, CONVERT(time, @hour, 108))
END

转换功能应该可以解决问题,但事实并非如此。 调试器说这个字符串是给存储过程的:“23:01:00” 根据这个页面:http://networking.ringofsaturn.com/SQL/howtoformatdatetime.php和msdn 108应该是这种转换的正确方式,对吗?

编辑:额外信息 基准column的类型为dateuur的类型为time

2 个答案:

答案 0 :(得分:3)

你忘记了尺寸;

@date nvarchar,
@hour nvarchar

因此,它们会截断为无法转换的单个字符,因此请更改为@hour(8)

答案 1 :(得分:0)

它接受字面翻译;

Declare @time as time
SET @time = '23:00:01'
SELECT @time

通过使用Convert()和转换选项108,它需要一个完整的日期。

亲切的问候,