我正在尝试从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
的类型为date
,uur
的类型为time
答案 0 :(得分:3)
你忘记了尺寸;
@date nvarchar,
@hour nvarchar
因此,它们会截断为无法转换的单个字符,因此请更改为@hour(8)
答案 1 :(得分:0)
它接受字面翻译;
Declare @time as time
SET @time = '23:00:01'
SELECT @time
通过使用Convert()和转换选项108,它需要一个完整的日期。
亲切的问候,