Безопасните формати на низове за дата и час, които да използвате в SQL Server, са
YYYYMMDD HH:MM:SS
или YYYY-MM-DDTHH:MM:SS
.
Преобразуването, което имате, ще бъде неуспешно, ако SET DATEFORMAT
е dmy. ЗАДАВАНЕ НА ЕЗИК
автоматично ще зададе формат на датата за вас. Мисля, че и двете german
и norwegian
използвайте dmy.
Това няма да успее:
set language norwegian
declare @F7 varchar(10) = '26/04/2011'
declare @F8 varchar(10) = '00:09:13'
DECLARE @Date VARCHAR(20)
SET @Date = RIGHT(@F7,4)+'/'+SUBSTRING(@F7,4,2)+'/'+LEFT(@F7,2)
DECLARE @time DATETIME
SET @time = CONVERT(DATETIME, @Date + ' ' + @F8)
Вместо това направете това (използвайки ГГГГ-ММ-ДДТЧЧ:ММ:СС), за да сте в безопасност, независимо от настройките за език/формат на дата.
declare @F7 varchar(10) = '26/04/2011'
declare @F8 varchar(10) = '00:09:13'
DECLARE @Date VARCHAR(20)
SET @Date = RIGHT(@F7,4)+'-'+SUBSTRING(@F7,4,2)+'-'+LEFT(@F7,2)
DECLARE @time DATETIME
SET @time = CONVERT(DATETIME, @Date + 'T' + @F8)