powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Получение следующего дня
4 сообщений из 4, страница 1 из 1
Получение следующего дня
    #33593554
DDT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет.

Есть такая задача. Нужно получить перечень дат, начиная со _startDate.
Вот функция под это дело:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
DECLARE
	_startDate ALIAS FOR $ 1 ;
	_currentDate _date;
BEGIN


_currentDate[ 0 ] = date_trunc('month', _startDate);
RAISE NOTICE '0: %', _currentDate[ 0 ];

FOR i IN  1 .. 4  LOOP
	_currentDate[i] = date_trunc('month', _currentDate[i- 1 ])+'1 day'::interval;
	RAISE NOTICE '%: %', i, _currentDate[i];
END LOOP;


END;

В результате должен получиться массив _currentDate:
[0] = 2006-01-01
[1] = 2006-01-02
[2] = 2006-01-03
[3] = 2006-01-04
[4] = 2006-01-05

А получается следующее:
[0] = 2006-01-01
[1] = 2006-01-02
[2] = 2006-01-02
[3] = 2006-01-02
[4] = 2006-01-02

Постгрес версии 8.

Почему день прибавляется отлько 1 раз?
Спасибо.
...
Рейтинг: 0 / 0
Получение следующего дня
    #33593577
-me-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
SELECT ARRAY(SELECT '2006-03-10'::date + generate_series( 0 , 4 ))
...
Рейтинг: 0 / 0
Получение следующего дня
    #33594261
Funny_Falcon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
DECLARE
	_startDate ALIAS FOR $ 1 ;
	_currentDate _date;
BEGIN


_currentDate[ 0 ] = date_trunc('month', _startDate);
RAISE NOTICE '0: %', _currentDate[ 0 ];

FOR i IN  1 .. 4  LOOP
--	_currentDate[i] = date_trunc('month', _currentDate[i-1])+'1 day'::interval; -- !!!!!!!!!!!!!
	_currentDate[i] = date_trunc('day', _currentDate[i- 1 ])+'1 day'::interval;
	RAISE NOTICE '%: %', i, _currentDate[i];
END LOOP;


END;
-me-
Код: plaintext
SELECT ARRAY(SELECT '2006-03-10'::date + generate_series( 0 , 4 )) --  5 +
...
Рейтинг: 0 / 0
Получение следующего дня
    #33595666
DDT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо. Красиво !
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Получение следующего дня
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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