Sql server 转换从字符串转换为日期时间失败
我尝试了下面的示例函数。。。我尝试了许多其他的方法,但仍然得到了错误,因为“从字符串转换日期时间时转换失败”。。我所尝试的就是从这个函数返回一个Datetime,但在这里的某个地方它仍然是字符串 请告知Sql server 转换从字符串转换为日期时间失败,sql-server,sql-server-2005,datetime,Sql Server,Sql Server 2005,Datetime,我尝试了下面的示例函数。。。我尝试了许多其他的方法,但仍然得到了错误,因为“从字符串转换日期时间时转换失败”。。我所尝试的就是从这个函数返回一个Datetime,但在这里的某个地方它仍然是字符串 请告知 declare @V_Year nvarchar (4), @Test datetime , @t1 as datetime , @t2 as datetime declare @Mon varchar(5) , @dayz varchar (5) , @GMTStart varchar(
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
我对您的代码做了一些更改:
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
您的代码正在创建当前年份的datetime值3月3日 日期字符串的解释取决于
set dateformat
,除非使用格式yyyymmdd
从代码中删除所有似乎没有任何用处的东西会给您留下这样的结果
select cast(cast(year(getdate()) as char(4))+'0301' as datetime)
可能重复的