powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Выборка диапазона дат
9 сообщений из 9, страница 1 из 1
Выборка диапазона дат
    #38607255
trom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Почему запрос
Код: sql
1.
select * from orders where create_date between '2014-04-01 00:00:00'::date and '2014-04-01 23:59:59'::date order by id desc;



не выводит все записи за 1 апреля

а вот такой запрос выводит

Код: sql
1.
select * from orders where create_date between '2014-04-01 00:00:00'::date and '2014-04-02 23:59:59'::date order by id desc;



но он по логике должен выводить записи еще и за 2 апреля.
...
Рейтинг: 0 / 0
Выборка диапазона дат
    #38607276
trom,

дело в том, что посгревый тип данных DATE не содержит в себе порцию времени... :)
...
Рейтинг: 0 / 0
Выборка диапазона дат
    #38607284
trom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый Э - Эх,

а как написать чтобы

between '2014-04-01 00:00:00'::date and '2014-04-01 23:59:59'::date

выдавал все записи за 1 апреля ?
...
Рейтинг: 0 / 0
Выборка диапазона дат
    #38607291
trom,

либо конвертировать литерал в таймштамп, а не в дате...
либо between заменить на >= AND <
...
Рейтинг: 0 / 0
Выборка диапазона дат
    #38607298
trom,

про типы данных: маленький наглядный пример...
...
Рейтинг: 0 / 0
Выборка диапазона дат
    #38607304
trom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый Э - Эх,

маленький пример помог спасибо!

Код: sql
1.
select * from orders where create_date between '2014-04-01 00:00:00'::timestamp and '2014-04-01 23:59:59'::timestamp order by id desc;

вот так все ок.


и еще один вариант нашел
Код: sql
1.
select * from orders where create_date between '2014-04-01 00:00:00'::date and '2014-04-01 23:59:59'::date+'1 day'::interval order by id desc;

но он наверно хуже ?
...
Рейтинг: 0 / 0
Выборка диапазона дат
    #38607314
trom,

второй вариант хуже, так как содержит неявное преобразование date --> timestamp.
Ну или если на уровне бытовой аналогии, то уж если у нас яблоки, то и сравнивать их нужно с яблоками, а не с апельсинами или грушами. :)
...
Рейтинг: 0 / 0
Выборка диапазона дат
    #38607330
trom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый Э - Эх,

понятно спасибо!
...
Рейтинг: 0 / 0
Выборка диапазона дат
    #38607505
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый Э - Эхtrom,

второй вариант хуже, так как содержит неявное преобразование date --> timestamp.
Ну или если на уровне бытовой аналогии, то уж если у нас яблоки, то и сравнивать их нужно с яблоками, а не с апельсинами или грушами. :)
вы бы , эх, плохому перестали учить
челу нужно "всё за дату", где всё - таймстампы
т.ч. between тут не при делах

т.к. сущестуют таймстампы вида
'2014-04-01 23:59:59.9999'::timestamp
и они, таки, принадлежат той же дате

вы же, Эх, знаете, что between тут не канает (или надо дополнять его выкалыванием верхней грани)
а канает банальный открытый (выколотый) интервал
Код: sql
1.
2.
3.
WHERE 
       create_date >= '2014-04-01'::date
       and create_date <'2014-04-01'::date+1;


ну, или тамстампить, но по тем же граням.

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


вот зачем вы плохому учите ? да ещё муть какую-то про груши околачиваете.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Выборка диапазона дат
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]