以下SQL
select creationdate as dt
from dbo.Posts2
where dt > '2013-06-31'
运行时出错:
Msg 207,Level 16,State 1,Line 1
列名称无效' dt'。
这有效:
Declare @date as varchar(30)
set @date='2008-07-31 21:42:52.667'
select convert(datetime,@date, 101) as [DateColumn]
但是失败了:
select creationdate from dbo.Posts2
where convert(datetime, creationdate, 101) > '2013-06-31'
错误是:
导致将varchar数据类型转换为日期时间数据类型 在超出范围的价值。
为什么?
答案 0 :(得分:3)
你不能在where
子句中使用别名。
只需写下
where convert(datetime, creationdate) > '2013-06-31'
编辑datetime / varchar转换错误:
您尝试与不存在的日期进行比较:6月只有30天,因此“2013-06-31”不是SQL Server的日期。