Корректное отображение списка дат
V.Andy
Дата: 03.12.2009 17:08:41
Здравствуйте! Помогите, пожалуйста, разобраться.
Есть таблица, где указан ряд операций и их даты. Т.е. в одну дату может быть много операций.
Исполняю запрос для того, чтобы сформировать лист дат, составляющих месяц "октябрь"
SELECT DISTINCT TRANS_DATA
FROM TRANSACTION
WHERE TRANS_DATA BETWEEN '01.10.2009' AND '31.10.2009';
Надеюсь получить ответ в виде 31 строки:
01.10.2009,
02.10.2009
....
31.10.2009
Вместо этого получаю ответ:
01.10.09
01.10.09
01.10.09
01.10.09
01.10.09
01.10.09
01.10.09
01.10.09
01.10.09
01.10.09
01.10.09
01.10.09
01.10.09
....
И так очень много строк. По-видимому их количество соответствует количеству уникальных операций. Подскажите, пожалуйста, как решить проблему. Спасибо.
juras
Дата: 03.12.2009 17:14:02
V.Andy,
а так?
SELECT DISTINCT TRANS_DATA
FROM TRANSACTION
WHERE TRANS_DATA BETWEEN to_date('01.10.2009', 'dd.mm.yyyy') AND to_date('31.10.2009', 'dd.mm.yyyy');
orawish
Дата: 03.12.2009 17:16:54
V.Andy,
вы даты ваши сохраняете в базе с временем.
1) trunc(TRANS_DATA) используйте
2) аналогично, когда бетвин используете - учтите, что 31.12.2009 00:05 > того значения ~ 31.12.2009 00:00:00, которым вы тут ограничиваете диапазон сверху
Sheriffua
Дата: 03.12.2009 17:22:09
juras |
V.Andy,
а так?
SELECT DISTINCT TRANS_DATA
FROM TRANSACTION
WHERE TRANS_DATA BETWEEN to_date('01.10.2009', 'dd.mm.yyyy') AND to_date('31.10.2009', 'dd.mm.yyyy'); |
+1 )))
V.Andy
Дата: 03.12.2009 17:31:34
Да, с to_date я пробовал, не получается, к сожалению. Результат прежний.
SQLap
Дата: 03.12.2009 18:03:25
V.Andy |
Да, с to_date я пробовал, не получается, к сожалению. Результат прежний. |
Вам сказали про TRUNC
V.Andy
Дата: 03.12.2009 18:04:35
Да, спасибо! Действительно, TRUNCATE помог.
DENIS_PR
Дата: 03.12.2009 20:58:44
V.Andy,
TRUNCATE TABLE?
Лучший способ решить проблему - рубить с корня !