gpt4 book ai didi

sql - 使用 date_trunc 的缺点

转载 作者:行者123 更新时间:2023-11-29 14:04:17 27 4
gpt4 key购买 nike

几年前我听说在 sql 中截断日期不是一个好习惯。是真的吗?

我需要从“yyyy-MM-dd”格式的表中获取日期类型列的值,日期当前以“yyyy-MM-dd hh:mm:ss”格式存储在表中

最佳答案

在正确的情况下使用 date_trunc 没有任何问题。

主要问题是涉及到 b-tree 索引的地方。如果您在 some_timestamp 上有一个索引并且您搜索 date_trunc('day', some_timestamp) = DATE '2012-01-01',PostgreSQL 无法使用该索引.

(理论上它可以将 date_trunc 表达式重写为可索引范围谓词,但事实并非如此)。

如果你改为写:

some_timestamp >= DATE '2012-01-01' AND some_timestamp < DATE '2012-01-02'

那么它就是b-tree可索引的。 (请注意,我有意没有使用 BETWEEN,因为它包含两者)。

有时创建表达式索引很有用,例如

create index blahindex on blahtable (date_trunc('day', some_timestamp));

但是由于每个额外的索引都有维护成本,所以最好只编写谓词以便尽可能轻松地与普通列索引一起使用。

关于sql - 使用 date_trunc 的缺点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25935560/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com