gpt4 book ai didi

ruby-on-rails-3 - 如何将一整天与日期时间字段匹配?

转载 作者:行者123 更新时间:2023-11-29 12:31:45 25 4
gpt4 key购买 nike

我有一个匹配表。该表有一个名为 matchdate 的列,它是一个 datetime 字段。

如果我在 2011-12-01 有 3 场比赛:

  • 2011-12-01 12:00:00
  • 2011-12-01 13:25:00
  • 2011-12-01 16:00:00

我该如何查询?如何查询 1 个日期的所有匹配项?

我看过date_trunc()to_char()
是不是有一些 "select * where datetime in date" 函数?

最佳答案

投出你的 timestamp date如果你想要简单的语法。像这样:

SELECT *
FROM tbl
WHERE timestamp_col::date = '2011-12-01'; -- date literal

但是,对于大表,这会更快:

SELECT *
FROM tbl
WHERE timestamp_col >= '2011-12-01 0:0' -- timestamp literal
AND timestamp_col < '2011-12-02 0:0';

原因:第二个查询不必转换表中的每个值,可以在时间戳列上使用一个简单的索引。表达式是 sargable .

注意排除了正确选择的上限(< 而不是 <=)。
您可以通过创建 index on an expression 来弥补这一点像这样:

CREATE INDEX tbl_ts_date_idx ON tbl (cast(timestamp_col AS date));

然后第一个版本的查询将尽可能快。

关于ruby-on-rails-3 - 如何将一整天与日期时间字段匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8833046/

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