Здравствуй, Гость! Регистрация RSS

loc2log

Вторник, 2026-04-21
Главная » 2012 » Ноябрь » 04

Дано: PostgreSQL, Таблица, где один из столбцов, - дата и время (тип timestamp without time zone). Пусть он называется fdt.

Требуется посчитать все записи, за определённый месяц данного года. Пусть, октябрь 2012го.

Решение: 3 варианта

1.
SELECT COUNT(*) FROM table WHERE date_part('month', fdt) = 10 AND date_part('year', fdt) = 2012 ;
2.
SELECT COUNT(*) FROM table WHERE EXTRACT(MONTH FROM fdt) = 10 AND EXTRACT(YEAR FROM fdt) = 2012;
3.
SELECT COUNT(*) FROM table WHERE fdt >= '2012-10-01' AND fdt < '2012-11-01';

Третий вариант, в среднем, несколько быстрее первых двух. Так, на одной и той-же таблице, варианты 1. и 2. обрабатывают 22806 записей за ~80 ms (вариант 2 показывал больший разброс, чем 1), а вариант 3 ~60ms.

Просмотров: 2123 | Добавил: ep | Дата: 2012-11-04 | Комментарии (0)