首页 > 解决方案 > “从字符串转换日期和/或时间时转换失败。” 错误

问题描述

我有以下查询:

DECLARE @Month int
DECLARE @Year int

set @Month = 2 
set @Year = 2004  

Declare @MonthStartDate datetime
declare @MonthEndDate datetime  

set @MonthStartDate = 'select DATEADD(month,@Month-1,DATEADD(year,@Year-1900,0))' 

set @MonthEndDate = 'select DATEADD(day,-1,DATEADD(month,@Month,DATEADD(year,@Year-1900,0)))'

返回 @MonthStartDate , @MonthEndDate

但它返回:

“从字符串转换日期和/或时间时转换失败。”

这里有什么问题?

标签: sql-server

解决方案


您应该使用 DateTime 表达式而不是字符串文字。只需删除引号:

DECLARE @Month int

DECLARE @Year int

set @Month = 2 

set @Year = 2004  

Declare @MonthStartDate datetime
declare @MonthEndDate datetime  

set @MonthStartDate = DATEADD(month,@Month-1,DATEADD(year,@Year-1900,0))

set @MonthEndDate = DATEADD(day,-1,DATEADD(month,@Month,DATEADD(year,@Year-1900,0)))

推荐阅读