SQL时间戳功能

时间:2010-05-26 22:39:15

标签: 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');

何时需要时间戳功能? 性能有差异吗?

3 个答案:

答案 0 :(得分:2)

如果ts是字符串类型:

  • 第一个是像字符串一样比较
  • 第二个将导致ts转换为日期/时间

如果ts是日期/时间类型,

  • 第一个将常量转换为与ts列相同的日期时间类型
  • 第二个是像日期/时间一样比较

如果ts是字符串类型,则第二个使用最差,因为ts将被转换,从而使任何索引无效。

如果ts是日期/时间,则没有区别

数据类型优先权适用于大多数数据库引擎

答案 1 :(得分:1)

乍一看,第一个语句将进行字符串比较,而第二个语句应进行与日期相关的比较。

答案 2 :(得分:0)

这取决于你的SQL实现,虽然假设列“ts”是某种日期/时间类型,但实际上没有区别。

大多数SQL实现都有一个强制转换映射,它指示引擎如何自动转换适合某些模式的数据类型,尤其是在字面比较没有意义的情况下。例如,字面上将时间戳与字符串进行比较没有多大意义。但是,大多数引擎都有一个映射,让它知道格式化为日期的字符串可以自动转换为时间戳,以便与另一个时间戳进行比较。

相关问题