powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Выбор смены запросом
13 сообщений из 13, страница 1 из 1
Выбор смены запросом
    #38709640
Фотография des1roer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть 2 смены. с 8 до 20 и с 20 до 8.
Как однозначно выбрать соответсвует число той или иной смене.
с дневной сменой вроде ок
Код: sql
1.
2.
3.
4.
5.
6.
7.
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'


а с ночной ?
делать 2 условия - до 24 и после 24?
...
Рейтинг: 0 / 0
Выбор смены запросом
    #38709643
Фотография des1roer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а хотя наверно так мона
Код: sql
1.
2.
	t1 > date(t2) + time '20:00' AND t1 < date(t2) + time '24:00'
					OR  t1 > date(t2) + time '00:00' AND t1 < date(t2) + time '8:00'
...
Рейтинг: 0 / 0
Выбор смены запросом
    #38709657
Фотография roadster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
des1roerа с ночной ?
делать 2 условия - до 24 и после 24?к 20:00 прибавлять 12 часов.
...
Рейтинг: 0 / 0
Выбор смены запросом
    #38709659
Фотография des1roer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так а после полуночи как7
...
Рейтинг: 0 / 0
Выбор смены запросом
    #38709667
Фотография roadster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
des1roerтак а после полуночи как7если к 20:00 2 апреля 2014 года прибавить 12 часов, то на выходе будет 08:00 2 апреля 2014 года.
уясни для себя элементарную вещь, что тип date и ему подобные - это число, если к любому значению поля типа date или timestamp прибавить 1 (единицу), то дата увеличится на один день.
...
Рейтинг: 0 / 0
Выбор смены запросом
    #38709668
Фотография roadster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
roadsterесли к 20:00 2 1 апреля 2014 года прибавить 12 часов, то на выходе будет 08:00 2 апреля 2014 года.
...
Рейтинг: 0 / 0
Выбор смены запросом
    #38709683
/\/\/\/\/\/\
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
des1roer,

Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT
  f_date,
  CASE
    WHEN EXTRACT(HOUR FROM f_date) BETWEEN 8 AND 19 THEN 'Одна смена'
    ELSE 'Другая смена'
  END AS shift
FROM sc_tag.t_tagdata
...
Рейтинг: 0 / 0
Выбор смены запросом
    #38710479
Фотография des1roer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
/\/\/\/\/\/\,

да да так вроде проще получилось
Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT
  "F_Date",
  CASE
    WHEN EXTRACT(HOUR FROM "F_Date") BETWEEN 8 AND 20 THEN '2 смена'
    ELSE '1 смена'
  END AS shift
FROM "SC_Tag"."T_TagData" where "F_TagName_ID" =3 order by "ID_TagData" desc limit 1
...
Рейтинг: 0 / 0
Выбор смены запросом
    #38710480
Фотография des1roer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
CREATE OR REPLACE FUNCTION functionSmen()
RETURNS text
AS $$
DECLARE
smen integer;
BEGIN

		SELECT
		  
		  CASE
			WHEN EXTRACT(HOUR FROM "F_Date") BETWEEN 8 AND 20 THEN 2 
			ELSE 1 
		  END AS shift, 
          "F_Date"
        INTO smen
		FROM "SC_Tag"."T_TagData" where "F_TagName_ID" =3 order by "ID_TagData" desc limit 1;
        
        RETURN (smen); 
        
END;
$$
LANGUAGE 'plpgsql';
SELECT functionSmen();
...
Рейтинг: 0 / 0
Выбор смены запросом
    #38710487
Фотография des1roer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
roadster, Не очень понял мысль. я запрашиваю время и должен знать какая это смена.
если накидать что-то вроде
Код: sql
1.
tc > date(t2) + time '20:00' and tc < date(t2) + time '20:00' + interval '12 hours' 


то после 24 часов он уже не будет попадать в интервал.
то есть второе условие после 24
Код: sql
1.
tc > date(t2) + time '00:00' and tc < date(t2) + time '8:00' 
...
Рейтинг: 0 / 0
Выбор смены запросом
    #38710508
/\/\/\/\/\/\
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
des1roer,

Вы вообще делаете очень много странных ошибок. Например:

автор
Код: sql
1.
2.
3.
4.
5.
6.
...
CASE
    WHEN EXTRACT(HOUR FROM "F_Date") BETWEEN 8 AND 20 THEN '2 смена'
    ELSE '1 смена'
END AS shift
...




Для даты со временем 20:15 вернет 20 часов и вторую смену, хотя она закончилась в 20 часов.
В исходном сообщении написано по-другому.
...
Рейтинг: 0 / 0
Выбор смены запросом
    #38710557
Фотография des1roer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да да. сейчас увидел. просто думал очепятка
...
Рейтинг: 0 / 0
Выбор смены запросом
    #38710664
Фотография roadster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
des1roerroadster, Не очень понял мысль. я запрашиваю время и должен знать какая это смена.о-хо-хо...
Код: sql
1.
tc between (date(t2) + time '20:00') and ((date(t2) + time '20:00')+(1/3))


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


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