Bạn có thể thử gửi lại biến bạn muốn kiểm tra. Ví dụ: Tôi có chức năng này:
--Contencates seperate date and time strings and converts to a datetime. Date should be in format 25.03.2012. Time as 9:18:25.
ALTER FUNCTION [dbo].[ufn_GetDateTime] (@date nvarchar(11), @time nvarchar(11))
RETURNS datetime
AS
BEGIN
--select dbo.ufn_GetDateTime('25.03.2012.', '9:18:25')
declare @datetime datetime
declare @day_part nvarchar(3)
declare @month_part nvarchar(3)
declare @year_part nvarchar(5)
declare @point_ix int
set @point_ix = charindex('.', @date)
set @day_part = substring(@date, 0, @point_ix)
set @date = substring(@date, @point_ix, len(@date) - @point_ix)
set @point_ix = charindex('.', @date)
set @month_part = substring(@date, 0, @point_ix)
set @date = substring(@date, @point_ix, len(@date) - @point_ix)
set @point_ix = charindex('.', @date)
set @year_part = substring(@date, 0, @point_ix)
set @datetime = @month_part + @day_part + @year_part + ' ' + @time
return @datetime
END
Khi tôi chạy nó .. Tôi nhận được: Msg 241, Level 16, State 1, Line 1 chuyển đổi thất bại khi chuyển đổi ngày tháng và/hoặc thời gian từ chuỗi ký tự.
Arghh !!
Vì vậy, tôi phải làm gì?
ALTER FUNCTION [dbo].[ufn_GetDateTime] (@date nvarchar(11), @time nvarchar(11))
RETURNS nvarchar(22)
AS
BEGIN
--select dbo.ufn_GetDateTime('25.03.2012.', '9:18:25')
declare @day_part nvarchar(3)
declare @point_ix int
set @point_ix = charindex('.', @date)
set @day_part = substring(@date, 0, @point_ix)
return @day_part
END
Và tôi nhận được '25'. Vì vậy, tôi tắt bởi một và vì vậy tôi thay đổi thành ..
set @day_part = substring(@date, 0, @point_ix + 1)
Thì đấy! Bây giờ nó hoạt động :)
để biết cách thực tế để thực hiện việc này, hãy xem: http://stackoverflow.com/a/10721985/65223 –