2013-09-12 6 views
-2

Я пробовал следующую примерную функцию ... и я попытался многими другими способами, но все же я получаю сообщение «Ошибка при преобразовании Datetime из символьной строки» .. Все, что я пытаюсь от этой функции я возвращающая DATETIME, но где-то здесь его еще строки ...Преобразование не удалось преобразовать в datetime из символьной строки

Пожалуйста посоветуйте

declare @V_Year nvarchar (4), @Test datetime , @t1 as datetime , @t2 as datetime 
declare @Mon varchar(5) , @dayz varchar (5) , @GMTStart varchar(20) 
set @Mon = '03' 
set @t1 = cast (@Mon as datetime) 
set @dayz = '01' 
set @t2 = cast (@dayz as datetime) 
SELECT @V_Year = DATEPART(year, getdate()) 
set @GMTStart = @Mon + '-' + @dayz + '-' + convert(nvarchar,@V_Year) 
set @Test = Cast(@GMTStart as datetime) 
select @Test 
+0

возможно дубликат [Преобразование VARCHAR в DateTime в SQL Server] (http://stackoverflow.com/questions/1509977/convert-varchar-into-datetime-in-sql-server) – athabaska

ответ

0

Я изменил код немного:

declare 
    @V_Year nvarchar (4), 
    @Test datetime , 
    @t1 as datetime , 
    @t2 as datetime 
declare 
    @Mon varchar(8), --here need to be varchar(8) because datetime has 8 digits 
    @dayz varchar(5), 
    @GMTStart varchar(20) 
set @Mon = '20130101' --here you must provide full date, not a part, because is not possible to convert just part of date into full date 
set @t1 = cast (@Mon as datetime) --this will work with 
--set @dayz = '01' 
--set @t2 = cast (@dayz as datetime) --this line not work with just day, must provide full date 

SET @V_Year = DATEPART(year, getdate()) --here first set a variable, and then select 
SELECT @V_Year 
set @GMTStart = @Mon + '-' + @dayz + '-' + convert(nvarchar, @V_Year) 
set @Test = Cast(@GMTStart as datetime) 
select @Test 
0

Ваш код создает значение datetime от 3 марта текущего года.

Интерпретация строк даты зависит от set dateformat, если вы не используете формат yyyymmdd.

Удаление всего материала из вашего кода, который, кажется, ничего не полезен, оставит вас с этим.

select cast(cast(year(getdate()) as char(4))+'0301' as datetime) 
Смежные вопросы