【发布时间】:2011-04-20 17:57:06
【问题描述】:
在 SQL Server 2005 数据库中,表有一个 nvarchar 列,其中包含日期时间或某些字符串值。例如03/11/2011 4:00:07 AM 或 Completed。
select * from log
where status >=
case isdate(status)
when 1 then convert(datetime, '03/11/2011 12:00:01 AM')
else ''
end
and status <=
case isdate(status)
when 1 then convert(datetime, '03/11/2011 4:00:00 PM')
else ''
end
我需要状态字段具有日期时间且日期时间介于 date1 和 date2 之间的数据。
【问题讨论】:
-
@Jeff:你编辑了它。但是什么是 SWL?
-
这叫错字,User13839404。下次请随意修复它,而不是发表评论。
-
我希望这不是一个需要高效的查询。它不是“SARGable”(参见 google),最大的问题是该列的数据类型不明确。也许这在您的上下文中没问题,但如果查询速度很慢,您需要规范化内容,最好是作为日期时间。
标签: sql-server-2005 tsql