【问题标题】:SQL error, Conversion failed when converting date and/or time from character stringSQL 错误,从字符串转换日期和/或时间时转换失败
【发布时间】:2015-04-25 19:54:36
【问题描述】:
declare @StartDate varchar(30), @myStartDate date, @iterate int, @DaysDiff int, @NoOfDays varchar (200) , @username varchar(30), @StaffID int
select @DaysDiff = 6, @iterate =0, @StartDate = '2015-04-29', @username = 'itdsnm'
select @StaffID = StaffID from Staff where LoginName = @username
select @myStartDate = cast(@StartDate as DATE) 
begin
Create Table #Temp8(Dates date,MyDay int)
    While @iterate < @DaysDiff +1
    Begin
        Insert Into #Temp8(Dates,MyDay)
        Select @myStartDate,DATEPART(dw,@myStartDate)
        Select @myStartDate = dateadd(dd,1,@myStartDate) 
        IF (Select COUNT(*) from #Temp8 where Dates In(Select StartDate From Holidays Where Username = @StaffID )) >0
        Begin 
            Select @NoOfDays = 'One of your days fall between a holiday already taken, please review'
            Return
        End
        Else
            Select @iterate = @iterate + 1
        End
;With Temp2(Dates,MyDay)
As
(Select Dates,MyDay from #Temp8 Where MyDay not in (1,7))

Select @NoOfDays = COUNT(*) from Temp2 Where Dates Not In (Select Date From BankHolidays)
   end

在上述过程中一切正常,但是当涉及到 With 语句时,它会抛出一个错误“从字符串转换日期和/或时间时转换失败。”有人可以帮我弄这个吗。提前致谢

【问题讨论】:

  • 哪个 dbms? (这是产品特定的功能......)
  • 请展示数据类型为BankHolidays的数据和架构示例
  • 银行假期是在 SQL 中手动创建的带有假期日期的表,例如:2015-05-25,2015-08-31,2015-12-25 ....

标签: sql-server tsql stored-procedures


【解决方案1】:

我同意 Tanner 的观点,即架构需要能够评估问题(即列数据类型)。

乍一看,虽然在我看来[BankHolidays] 中的[Date] 可能是某种字符串数据类型,并且该列包含某些无法转换为DATE 类型的字符串值。

【讨论】:

  • 嗨,Goody,非常感谢。是的,BankHoliday 中的日期被声明为 varchar,而且日期格式不匹配。再次感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-03
  • 1970-01-01
  • 2021-07-13
相关资源
最近更新 更多