工作代码
if getdate()>convert(DATE,'09/29/2006')
select 1
else
select 2
不工作代码
DECLARE @1 varchar='09',
@2 varchar='29',
@3 varchar='2006'
if getdate()>convert(DATE,@1+'/'+@2+'/'+@3)
select 1
else
select 2
遇到问题
从字符串转换日期和/或时间时转换失败。
请告诉我这些变化?
答案 0 :(得分:4)
使用varchar()
时始终使用长度。您的值被截断为一个字符:
DECLARE @1 varchar(255)= '09',
@2 varchar(255) = '29',
@3 varchar(255) = '2006'
因此,您的日期转换为'0/2/2'
。
答案 1 :(得分:1)
尝试声明varchar(n)
的大小,因为在没有声明任何内容的情况下,您将获得varchar(1)
。看看this article。
DECLARE @1 VARCHAR(2)='09',
@2 VARCHAR(2)='29',
@3 VARCHAR(4)='2006'
if getdate()>convert(DATE,@1+'/'+@2+'/'+@3)
select 1
else
select 2
如果您使用的是2012+,则可以使用CONCAT()来组合字符串。
CONCAT(@1,'/',@2,'/',@3)