SQL标记函数
这两个查询之间有什么区别吗SQL标记函数,sql,performance,db2,timestamp,Sql,Performance,Db2,Timestamp,这两个查询之间有什么区别吗 select * from tbl where ts < '9999-12-31-24.00.00.000000'; 从tbl中选择*,其中ts
select * from tbl where ts < '9999-12-31-24.00.00.000000';
从tbl中选择*,其中ts<'9999-12-31-24.00.00.000000';
及
从tbl中选择*,其中ts
何时需要时间戳功能?
性能有差异吗?乍一看,第一条语句将进行字符串比较,而第二条语句应进行日期相关比较。乍一看,第一条语句将进行字符串比较,而第二条语句应进行日期相关比较。这取决于您的SQL实现,虽然假设列“ts”是某种日期/时间类型,但实际上没有区别
大多数SQL实现都有一个强制转换映射,它指示引擎如何自动转换符合某种模式的数据类型,特别是在字面上的比较毫无意义的情况下。例如,字面上比较时间戳和字符串没有多大意义。然而,大多数引擎都有一个映射,让它知道格式类似于日期的字符串可以自动转换为时间戳,以便与另一个时间戳进行比较。这取决于您的SQL实现,尽管假设列“ts”是某种日期/时间类型,但实际上没有区别
大多数SQL实现都有一个强制转换映射,它指示引擎如何自动转换符合某种模式的数据类型,特别是在字面上的比较毫无意义的情况下。例如,字面上比较时间戳和字符串没有多大意义。但是,大多数引擎都有一个映射,可以让它知道格式类似于日期的字符串可以自动转换为时间戳,以便与其他时间戳进行比较。如果ts是字符串类型:
- 第一个是比较相似的字符串
- 第二个将导致ts转换为日期/时间
- 第一个将常数转换为与ts列相同的日期时间类型
- 第二个是比较相似的日期/时间
如果ts是字符串类型,则数据类型优先级适用于大多数DB引擎:
- 第一个是比较相似的字符串
- 第二个将导致ts转换为日期/时间
- 第一个将常数转换为与ts列相同的日期时间类型
- 第二个是比较相似的日期/时间
select * from tbl where ts < timestamp('9999-12-31-24.00.00.000000');