powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Формат даты
16 сообщений из 41, страница 2 из 2
Формат даты
    #38707326
Фотография des1roer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
abstime() было бы короче написать. берегите хоть клавиатуру
...
Рейтинг: 0 / 0
Формат даты
    #38707361
rovan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
des1roerabstime() было бы короче написать. берегите хоть клавиатуру
Как ты умудряешься находить неправильные решения, и не находить правильные ?
...
Рейтинг: 0 / 0
Формат даты
    #38707373
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rovandes1roerabstime() было бы короче написать. берегите хоть клавиатуру
Как ты умудряешься находить неправильные решения, и не находить правильные ?
дык бестолкоффка у пердца шоб в её есть.

например посоветуйте перчику дробную (в секундах) "эпоху" привести к abstime
или что-нть побольше 2038 года -- туда же.
...
Рейтинг: 0 / 0
Формат даты
    #38708658
Фотография des1roer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
народ а подскажите что такое
Код: sql
1.
2.
3.
4.
5.
CREATE TRIGGER t_user
  AFTER INSERT 
  ON "SC_Tag"."T_TagData" FOR EACH ROW 
  WHEN (pg_trigger_depth() = 0)
EXECUTE PROCEDURE "SC_Tag".add_to_log();



соответсвенно
Код: sql
1.
  WHEN (pg_trigger_depth() = 0)


без него постгрес ругался и ничего не делал
...
Рейтинг: 0 / 0
Формат даты
    #38708665
этта
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
des1roer,

вероятно вы организовали бесконечную рекурсию . на которую пж и ругался. а ограничив глубину -- обрезали.
...
Рейтинг: 0 / 0
Формат даты
    #38708672
Фотография des1roer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
подскажите как отлаживать триггер?
налетаю на

Код: sql
1.
2.
3.
07/30/2014 10:28:13|Debug|Npgsql.NpgsqlException:
control reached end of trigger procedure without RETURN
Severity: ERROR




понимаю что ретурн нужно сделать а вот где и как?
функция (осторожно много кода)

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
CREATE OR REPLACE FUNCTION "SC_Tag".functionparse (
)
RETURNS trigger AS
$body$
DECLARE
t1 timestamp;
t2 timestamp;
dt interval;
tc timestamp;
delta integer;
curval real;
cursum real;
presum real;
result text;
BEGIN
	SELECT * FROM(
	SELECT 	"F_Date", 
			"ID_TagData"
	INTO t1 
	FROM 
	  "SC_Tag"."T_TagData" 
	WHERE "F_TagName_ID" = 3   
	ORDER BY "ID_TagData" DESC LIMIT 2)
	AS foo ORDER BY "ID_TagData" ASC LIMIT 1;
	  
	SELECT  "F_Date", 
			"ID_TagData"
	INTO t2 
	FROM 
	  "SC_Tag"."T_TagData" 
	WHERE "F_TagName_ID" = 3   
	ORDER BY "ID_TagData" DESC LIMIT 1;

	
	IF(t1 >  date(t2)+ time '08:00' AND t1 < date(t2) + time '20:00' 
	AND
    t2 >  date(t2)+ time '08:00' AND t2 < date(t2) + time '20:00')
	THEN
		SELECT 		"F_Date", 
					"ID_TagData"
			INTO tc 
			FROM 	"SC_Tag"."T_TagData" 
			WHERE "F_TagName_ID" = 2  
			ORDER BY "ID_TagData" DESC LIMIT 1;
			IF (tc >  date(t2)+ time '08:00' AND tc < date(t2) + time '20:00' )
				THEN					  	
					  dt = t2 - t1;
					  result = dt;
					  --RETURN ('2 смена '||result);
					  IF (dt <= '00:00:35')
						THEN 
														
							SELECT 	"F_ConvertedValue", 
									"ID_TagData"
							INTO curval 
							FROM 	"SC_Tag"."T_TagData" 
							WHERE "F_TagName_ID" = 3   
							ORDER BY "ID_TagData" DESC LIMIT 1;
						  
							SELECT 	"F_ConvertedValue", 
									"ID_TagData"
							INTO presum 	
							FROM 	"SC_Tag"."T_TagData" 
							WHERE "F_TagName_ID" = 2   AND  "F_ConvertedValue" IS NOT NULL 
							ORDER BY "ID_TagData" DESC LIMIT 1;
						
								IF (tc <t2)
								  THEN
									SELECT EXTRACT (EPOCH FROM dt) 
									INTO delta;
									cursum = curval/delta;
									cursum = presum + cursum;
									INSERT INTO 
										"SC_Tag"."T_TagData"
									  (
										"F_TagName_ID",
										"F_ConvertedValue",
										"F_Date" 
									  )
									VALUES (
										2,
										cursum,
										t2
									  );  
									result = cursum;
									RETURN NEW;
								END IF;
							--return ('hz');
                            RETURN OLD;
						END IF;
			ELSE 
			--t1 записываем за 0	
				INSERT INTO 
										"SC_Tag"."T_TagData"
									  (
										"F_TagName_ID",
										"F_ConvertedValue",
										"F_Date" 
									  )
									VALUES (
										2,
										0,
										t1
									  ); 
                RETURN NEW;
			END IF;
	  
	ELSEIF (t1 > date(t2) - interval '24 hours'+ time '20:00' AND t1 < date(t2) + time '8:00'
	AND
	t2 > date(t2) - interval '24 hours'+ time '20:00' AND t2 < date(t2) + time '8:00')
	THEN
		SELECT 		"F_Date", 
					"ID_TagData"
			INTO tc 
			FROM 	"SC_Tag"."T_TagData" 
			WHERE "F_TagName_ID" = 2  
			ORDER BY "ID_TagData" DESC LIMIT 1;
			IF (tc > date(t2) - interval '24 hours'+ time '20:00' AND tc < date(t2) + time '8:00' )
				THEN					  	
					  dt = t2 - t1;
					  result = dt;
					  --RETURN ('1 смена '||result);
					  IF (dt <= '00:00:35')
						THEN 
														
							SELECT 	"F_ConvertedValue", 
									"ID_TagData"
							INTO curval 
							FROM 	"SC_Tag"."T_TagData" 
							WHERE "F_TagName_ID" = 3   
							ORDER BY "ID_TagData" DESC LIMIT 1;
						  
							SELECT 	"F_ConvertedValue", 
									"ID_TagData"
							INTO presum 
							FROM 	"SC_Tag"."T_TagData" 
							WHERE "F_TagName_ID" = 2   AND  "F_ConvertedValue" IS NOT NULL
							ORDER BY "ID_TagData" DESC LIMIT 1;
						
								IF (tc <t2)
								  THEN
									SELECT EXTRACT (EPOCH FROM dt) 
									INTO delta;
									cursum = curval/delta;
									cursum = presum + cursum;
									INSERT INTO 
										"SC_Tag"."T_TagData"
									  (
										"F_TagName_ID",
										"F_ConvertedValue",
										"F_Date" 
									  )
									VALUES (
										2,
										cursum,
										t2
									  );  
									result = cursum;
									RETURN NEW;
								END IF;
							--return ('hz2');
                            RETURN OLD;
						END IF;
			ELSE 
			--t1 записываем за 0	
				INSERT INTO 
										"SC_Tag"."T_TagData"
									  (
										"F_TagName_ID",
										"F_ConvertedValue",
										"F_Date" 
									  )
									VALUES (
										2,
										0,
										t1
									  ); 
                RETURN NEW;
			END IF;
            
	ELSEIF (t1 > date(t2) - interval '24 hours'+ time '20:00' AND t1 < date(t2) + time '8:00'
    AND
    t2 >  date(t2)+ time '08:00' AND t2 < date(t2) + time '20:00')
	THEN	 
      --t2 записываем за 0	
      INSERT INTO 
										"SC_Tag"."T_TagData"
									  (
										"F_TagName_ID",
										"F_ConvertedValue",
										"F_Date" 
									  )
									VALUES (
										2,
										0,
										t2
									  ); 
	  result = t2;
	  RETURN NEW;
	  
	ELSEIF (t1 >  date(t1)+ time '08:00' AND t1 < date(t1) + time '20:00'
    AND
    t2 > date(t1) + time '20:00' AND t2 < date(t1) +interval '24 hours' + time '8:00')
	THEN
	  --t2 записываем за 0	
      INSERT INTO 
										"SC_Tag"."T_TagData"
									  (
										"F_TagName_ID",
										"F_ConvertedValue",
										"F_Date" 
									  )
									VALUES (
										2,
										0,
										t2
									  ); 
	  result = t1;
	  RETURN NEW;
	  
	END IF;
	
END;
$body$
LANGUAGE 'plpgsql'
VOLATILE
CALLED ON NULL INPUT
SECURITY INVOKER
COST 100;






триггер

Код: sql
1.
2.
3.
4.
5.
CREATE TRIGGER calc
  AFTER INSERT 
  ON "SC_Tag"."T_TagData" FOR EACH ROW 
  WHEN (pg_trigger_depth() = 0)
EXECUTE PROCEDURE "SC_Tag".functionparse();
...
Рейтинг: 0 / 0
Формат даты
    #38708680
Фотография des1roer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в конуе функции вставил ретурн олд

Код: sql
1.
2.
3.
4.
5.
6.
	  result = t1;
	  RETURN NEW;
	  
	END IF;
	RETURN OLD;
END;



я правильно понимаю что при записи нужно писать ретун нью, а если ничего не произошло то ретун олд?
...
Рейтинг: 0 / 0
Формат даты
    #38708813
Гость_0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
des1roer,

нет не правильно, прочитайте в документации что и когда возвращают из тригера.
...
Рейтинг: 0 / 0
Формат даты
    #38709635
Фотография des1roer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ниче не могу понять. затык тупой, надеюсь ответ быстро получу. как выбрать все значения по времени раньше определенного момента?
делаю так - не получается
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
    SELECT 
  "ID_TagData",
  "F_TagName_ID",
  "F_Conversion_ID",
  "F_Value",
  "F_Date",
  "F_ConvertedValue"
FROM 
  "SC_Tag"."T_TagData" where    "F_Date" < '07-31-2014 23:51:44'  order by "ID_TagData"   desc limit 100 ;
...
Рейтинг: 0 / 0
Формат даты
    #38709655
Фотография roadster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
des1roerделаю так - не получаетсячто это значит?
ошибка какая-то?
...
Рейтинг: 0 / 0
Формат даты
    #38709658
Фотография des1roer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
млин. вопрос отпал. правильно запрос составлен. видимо переподключиться к базе надо было
...
Рейтинг: 0 / 0
Формат даты
    #38835200
peleduy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вопрос еще такой:
Запрос на представление данных из таблицы выводит время в формате h:mm а нужно hh:mm:ss. Как этого добиться в SQL запросе?
...
Рейтинг: 0 / 0
Формат даты
    #38835273
/\/\/\/\/\/\
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
peleduy,

Настройте Вашего клиента на нужный формат.
Если Вы хотели преобразовать время в строку в нужном формате, то RTFM : to_char(current_timestamp, 'HH24:MI:SS')
...
Рейтинг: 0 / 0
Формат даты
    #38835291
Новичег
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я бы хотел уточнить:
Запрос: SELECT * FROM table
выводит время в формате h:mm (поле "time") (на клиенте поле типа TableView, настроек формата там нет).
Мне нужно внутри запроса задать формат для поля "time", чтобы время было в формате hh:mm:ss
...
Рейтинг: 0 / 0
Формат даты
    #38835318
tadmin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
select now()::time(0),now()::timestamp(0),to_char(now(),'yyyy-mm-dd HH24:MI:SS');
...
Рейтинг: 0 / 0
Формат даты
    #38836141
Новичег
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tadmin,
Спасибо, что ответили.
Удалось получить результат, изменив формат в запросе на создание таблицы: вместо time указал interval:
query.exec("create table tbl (id int primary key, "
"date date, time interval, ..., reg int)");
...
Рейтинг: 0 / 0
16 сообщений из 41, страница 2 из 2
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Формат даты
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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