Fre*_*III 1 postgresql select datetime timestamp ruby-on-rails-3
我有一张比赛桌.该表有一个名为的列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
Run Code Online (Sandbox Code Playgroud)
但是,使用大表格会更快:
SELECT *
FROM tbl
WHERE timestamp_col >= '2011-12-01 0:0' -- timestamp literal
AND timestamp_col < '2011-12-02 0:0';
Run Code Online (Sandbox Code Playgroud)
原因:第二个查询不必转换表中的每个值,并且可以在timestamp列上使用简单索引.表达是可以理解的.
注意排除上限(<而不是<=)正确选择.
您可以通过在表达式上创建索引来弥补这一点,如下所示:
CREATE INDEX tbl_ts_date_idx ON tbl (cast(timestamp_col AS date));
Run Code Online (Sandbox Code Playgroud)
然后查询的第一个版本将尽可能快.
| 归档时间: |
|
| 查看次数: |
589 次 |
| 最近记录: |