【发布时间】:2010-05-26 22:39:15
【问题描述】:
这两个查询有什么区别吗?
select * from tbl where ts < '9999-12-31-24.00.00.000000';
和
select * from tbl where ts < timestamp('9999-12-31-24.00.00.000000');
什么时候需要时间戳功能? 性能有区别吗?
【问题讨论】:
标签: sql performance db2 timestamp
这两个查询有什么区别吗?
select * from tbl where ts < '9999-12-31-24.00.00.000000';
和
select * from tbl where ts < timestamp('9999-12-31-24.00.00.000000');
什么时候需要时间戳功能? 性能有区别吗?
【问题讨论】:
标签: sql performance db2 timestamp
如果ts是字符串类型:
如果 ts 是日期/时间类型,
如果 ts 是字符串类型,第二个是最差使用的,因为 ts 将被转换,从而使任何索引无效。
如果 ts 是日期/时间,则没有区别
数据类型优先级适用于大多数数据库引擎
【讨论】:
乍一看,第一个语句会进行字符串比较,而第二个语句应该进行日期相关的比较。
【讨论】:
这取决于您的 SQL 实现,尽管假设“ts”列是某种日期/时间类型,但实际上没有区别。
大多数 SQL 实现都有一个转换映射,它指示引擎如何自动转换符合某种模式的数据类型,尤其是在字面比较没有意义的情况下。例如,从字面上比较时间戳和字符串没有多大意义。但是,大多数引擎都有一个映射,可以让它知道格式为日期的字符串可以自动转换为时间戳,以便与另一个时间戳进行比较。
【讨论】: