1

我有相当直接的查询,可以过滤 where 子句中的特定日期,如下所示:

declare @a_date date
set @a_date = '2013-09-17' 

select * from table t where t.date = @a_date

上面的查询需要很长时间,大约需要 30 分钟才能运行。

将查询更改为以下内容仅需几秒钟即可运行:

declare @a_date date
declare @string_date varchar(8)

set @a_date = '2013-09-17' 

set @string_date = convert(varchar(8), @a_date, 112)

select * from table t where t.date = @string_date

我在 Sybase ASE 12 中使用 RapidSQL 和 iSql 执行此查询并观察相同的行为。根据 Sybase 日期转换,兼容的日期字符串格式会自动转换为运算符 RHS 中的日期类型。

字段 t.date 是日期时间数据类型。

有什么建议为什么会发生这种情况?

4

0 回答 0