Производственный календарь: 1 квартал 2018 года. Когда конец квартала
Производственный календарь на 2018 год
Производственный календарь на 2018 год
Производственный календарь на 2018 год - данный календарь регламентируется соответствующими законодательными актами, определяющими окончательную продолжительность рабочего графика. По-прежнему актуальными являются положения ст. 112 ТК, по которой нерабочими днями в Российской Федерации в 2018 году определены следующие: 1, 2, 3, 4, 5, 6, 8 января — Новогодние каникулы; 7 января — Рождество Христово; 23 февраля — День защитника Отечества; 8 марта — Международный женский день; 1 мая — Праздник Весны и Труда; 9 мая — День Победы; 12 июня — День России; 4 ноября — День народного единства.
Перенос выходных дней в 2018 году осуществляется в соответствии с положениями, утвержденными Постановлением Правительства РФ "О переносе выходных дней в 2018 году" от 04 октября 2017г. № 1250, то есть:
6 января (Сб) на 9 марта (Пт)
7 января (Вс) на 2 мая (Ср)
28 апреля (Сб) на 30 апреля (Пн)
9 июня (Сб) на 11 июня (Пн)
29 декабря (Сб) на 31 декабря (Пн)
В этом году в России уже прошел чемпионат мира по футболу и весьма неплохо все получилось =), ждем 23 Зимние Олимпийские игры и отправку на Марс пилотируемого космического корабля (приоритетность ожидаемого каждый определяем сами). Итак, производственный календарь:
1 - рабочий день; 2 - предпраздничный день; 3 - выходной или праздничный день
Январь | Февраль | Март | |||||||||||||||
Понедельник | 1 | 8 | 15 | 22 | 29 | 29 | 5 | 12 | 19 | 26 | 26 | 5 | 12 | 19 | 26 | ||
Вторник | 9 | 16 | 23 | 30 | 30 | 6 | 13 | 20 | 27 | 27 | 6 | 13 | 20 | 27 | |||
Среда | 3 | 10 | 17 | 24 | 31 | 31 | 7 | 14 | 21 | 28 | 28 | 7 | 14 | 21 | 28 | ||
Четверг | 4 | 11 | 18 | 25 | 1 | 1 | 8 | 15 | 22 | 1 | 1 | 8 | 15 | 22 | 29 | ||
Пятница | 5 | 12 | 19 | 2 | 2 | 9 | 16 | 23 | 2 | 2 | 9 | 16 | 23 | 30 | |||
Суббота | 6 | 13 | 20 | 27 | 3 | 3 | 10 | 17 | 24 | 3 | 3 | 10 | 17 | 24 | 31 | ||
Воскресенье | 7 | 14 | 21 | 28 | 4 | 4 | 11 | 18 | 25 | 4 | 4 | 11 | 18 | 25 | 1 |
Нормы времени | Январь | Февраль | Март | 1 квартал 2018г. |
Календарных дней | 31 | 28 | 31 | 90 |
Рабочих дней | 17 | 19 | 20 | 56 |
Выходных и праздничных дней | 14 | 9 | 11 | 34 |
При 40-часовой рабочей неделе | 136 | 151 | 159 | 446 |
При 36-часовой рабочей неделе | 122,4 | 135,8 | 143 | 401,2 |
При 24-часовой рабочей неделе | 81,6 | 90,2 | 95 | 266,8 |
Апрель | Май | Июнь | ||||||||||||||||
Понедельник | 26 | 2 | 9 | 16 | 23 | 30 | 30 | 7 | 14 | 21 | 28 | 28 | 4 | 11 | 18 | 25 | ||
27 | 3 | 10 | 17 | 24 | 1 | 1 | 8 | 15 | 22 | 29 | 29 | 5 | 12 | 19 | 26 | |||
Среда | 28 | 4 | 11 | 18 | 25 | 2 | 2 | 9 | 16 | 23 | 30 | 30 | 6 | 13 | 20 | 27 | ||
Четверг | 29 | 5 | 12 | 19 | 26 | 3 | 3 | 10 | 17 | 24 | 31 | 31 | 7 | 14 | 21 | 28 | ||
Пятница | 30 | 6 | 13 | 20 | 27 | 4 | 4 | 11 | 18 | 25 | 1 | 1 | 8 | 15 | 22 | 29 | ||
Суббота | 31 | 7 | 14 | 21 | 28 | 5 | 5 | 12 | 19 | 26 | 2 | 2 | 9 | 16 | 23 | 30 | ||
Воскресенье | 1 | 8 | 15 | 22 | 29 | 6 | 6 | 13 | 20 | 27 | 3 | 3 | 10 | 17 | 24 | 1 |
Нормы времени | Апрель | Май | Июнь | 2 квартал 2018г. | 1 полугодие |
Календарных дней | 30 | 31 | 30 | 91 | 181 |
Рабочих дней | 21 | 20 | 20 | 61 | 117 |
Выходных и праздничных дней | 9 | 11 | 10 | 30 | 64 |
При 40-часовой рабочей неделе | 167 | 159 | 159 | 485 | 931 |
При 36-часовой рабочей неделе | 150,2 | 143 | 143 | 436,2 | 837,4 |
При 24-часовой рабочей неделе | 99,8 | 95 | 95 | 289,8 | 556,6 |
Июль | Август | Сентябрь | ||||||||||||||||
Понедельник | 26 | 2 | 9 | 16 | 23 | 30 | 30 | 6 | 13 | 20 | 27 | 27 | 3 | 10 | 17 | 24 | ||
Вторник | 27 | 3 | 10 | 17 | 24 | 31 | 31 | 7 | 14 | 21 | 28 | 28 | 4 | 11 | 18 | 25 | ||
Среда | 28 | 4 | 11 | 18 | 25 | 1 | 1 | 8 | 15 | 22 | 29 | 29 | 5 | 12 | 19 | 26 | ||
Четверг | 29 | 5 | 12 | 19 | 26 | 2 | 2 | 9 | 16 | 23 | 30 | 6 | 13 | 20 | 27 | |||
Пятница | 30 | 6 | 13 | 20 | 27 | 3 | 3 | 10 | 17 | 24 | 31 | 31 | 7 | 14 | 21 | 28 | ||
Суббота | 31 | 7 | 14 | 21 | 28 | 4 | 4 | 11 | 18 | 25 | 1 | 1 | 8 | 15 | 22 | 29 | ||
Воскресенье | 1 | 8 | 15 | 22 | 29 | 5 | 5 | 12 | 19 | 26 | 2 | 2 | 9 | 16 | 23 | 30 |
Нормы времени | Июль | Август | Сентябрь | 3 квартал 2018г. |
Календарных дней | 31 | 31 | 30 | 92 |
Рабочих дней | 22 | 23 | 20 | 65 |
Выходных и праздничных дней | 9 | 8 | 10 | 27 |
При 40-часовой рабочей неделе | 176 | 184 | 160 | 520 |
При 36-часовой рабочей неделе | 158,4 | 165,6 | 144 | 468 |
При 24-часовой рабочей неделе | 105,6 | 110,4 | 96 | 312 |
Октябрь | Ноябрь | Декабрь | ||||||||||||||||
Понедельник | 1 | 8 | 15 | 22 | 29 | 29 | 5 | 12 | 19 | 26 | 26 | 3 | 10 | 17 | 24 | 31 | ||
Вторник | 2 | 9 | 16 | 23 | 30 | 30 | 6 | 13 | 20 | 27 | 27 | 4 | 11 | 18 | 25 | 1 | ||
Среда | 3 | 10 | 17 | 24 | 31 | 31 | 7 | 14 | 21 | 28 | 28 | 5 | 12 | 19 | 26 | 2 | ||
Четверг | 4 | 11 | 18 | 25 | 1 | 1 | 8 | 15 | 22 | 29 | 29 | 6 | 13 | 20 | 27 | 3 | ||
Пятница | 5 | 12 | 19 | 26 | 2 | 2 | 9 | 16 | 23 | 30 | 30 | 7 | 14 | 21 | 28 | 4 | ||
Суббота | 6 | 13 | 20 | 27 | 3 | 3 | 10 | 17 | 24 | 1 | 1 | 8 | 15 | 22 | 29 | 5 | ||
Воскресенье | 7 | 14 | 21 | 28 | 4 | 4 | 11 | 18 | 25 | 2 | 2 | 9 | 16 | 23 | 30 | 6 |
Нормы времени | Октябрь | Ноябрь | Декабрь | 4 квартал 2018г. | 2 полугодие | 2018 год в целом |
Календарных дней | 31 | 30 | 31 | 92 | 184 | 365 |
Рабочих дней | 23 | 21 | 21 | 65 | 130 | 247 |
Выходных и праздничных дней | 8 | 9 | 10 | 27 | 54 | 118 |
При 40-часовой рабочей неделе | 184 | 168 | 167 | 519 | 1039 | 1970 |
При 36-часовой рабочей неделе | 165,6 | 151,2 | 150,2 | 467 | 935 | 1772,4 |
При 24-часовой рабочей неделе | 110,4 | 100,8 | 99,8 | 311 | 623 | 1179,6 |
itsreda.ru
Получение дат начала и конца кварталов года
314 | Глава 9. Работа с датами |
| end wk |
from | ( |
select | dateadd(day, day(getdate())+1,getdate()) dy |
from | t1 |
| ) x |
union | all |
select dateadd(d,1,dy), day(dateadd(d,1,dy)), mth, datepart(dw,dateadd(d,1,dy)),
case when datepart(dw,dateadd(d,1,dy)) = 1 then datepart(wk,dateadd(d,1,dy)) 1 else datepart(wk,dateadd(d,1,dy))
end from x
where datepart(m,dateadd(d,1,dy)) = mth
)
select max(case dw when 2 then dm end) as Mo, max(case dw when 3 then dm end) as Tu, max(case dw when 4 then dm end) as We, max(case dw when 5 then dm end) as Th, max(case dw when 6 then dm end) as Fr, max(case dw when 7 then dm end) as Sa, max(case dw when 1 then dm end) as Su
from x group by wk order by wk
MO TU WE TH FR SA SU
0102 03 04 05
06 07 08 09 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Задача
Требуется возвратить даты начала и конца каждого из четырех квар! талов данного года.
Решение
В году четыре квартала, таким образом, требуется создать четыре строки. После создания необходимого количества строк возвращаем даты начала и окончания кварталов с помощью функций для работы с датами, предоставляемых СУБД. Цель – сформировать следующее результирующее множество (текущий год выбирается произвольно):
Получение дат начала и конца кварталов года | 315 |
1 01 JAN 2005 31 MAR 2005 2 01 APR 2005 30 JUN 2005 3 01 JUL 2005 30 SEP 2005 4 01 OCT 2005 31 DEC 2005
DB2
Для формирования четырех строк используйте таблицу EMP и ранжи! рующую функцию ROW_NUMBER OVER. В качестве альтернативы строки можно создать с помощью оператора WITH (как во многих ре! цептах) или запроса к таблице, содержащей не менее четырех строк. В следующем решении используется функция ROW_NUMBER OVER:
1 select quarter(dy 1 day) QTR,
2 dy 3 month Q_start,
3dy 1 day Q_end
4from (
5 select (current_date
6(dayofyear(current_date) 1) day
7+ (rn*3) month) dy
8from (
9 select row_number()over() rn
10from emp
11fetch first 4 rows only
12) x
13) y
Oracle
С помощью функции ADD_MONTHS найдите начальную и конечную даты каждого квартала. Для представления квартала, которому соот! ветствуют та или иная начальная и конечная даты, используйте псев! достолбец ROWNUM (номер строки). В следующем решении для фор! мирования четырех строк используется таблица EMP:
1 select rownum qtr,
2 add_months(trunc(sysdate,'y'),(rownum 1)*3) q_start,
3 add_months(trunc(sysdate,'y'),rownum*3) 1 q_end
4from emp
5 where rownum <= 4
PostgreSQL
Используйте функцию GENERATE_SERIES для получения требуе! мых четырех кварталов. С помощью функции DATE_TRUNC от дат, возвращенных для каждого квартала, отсеките день, оставляя лишь год и месяц. Используя функцию TO_CHAR, установите соответствие между кварталом и начальной и конечной датами:
1 select to_char(dy,'Q') as QTR,
2date(
3 | date_trunc('month',dy) (2*interval '1 month') |
4) as Q_start,
316 | Глава 9. Работа с датами |
5dy as Q_end
6from (
7 select date(dy+((rn*3) * interval '1 month')) 1 as dy
8from (
9 select rn, date(date_trunc('year',current_date)) as dy
10from generate_series(1,4) gs(rn)
11) x
12) y
MySQL
Используйте таблицу T500, чтобы получить четрые строки (по одной для каждого квартала). Даты начала и конца каждого квартала вы! числяются с помощью функций DATE_ADD и ADDDATE. Используя функцию QUARTER, установите соответствие между кварталом и на! чальной и конечной датами:
1 select quarter(adddate(dy, 1)) QTR,
2 date_add(dy,interval 3 month) Q_start,
3adddate(dy, 1) Q_end
4from (
5 | select | date_add(dy,interval (3*id) month) dy |
6 | from | ( |
7 | select id, | |
8 |
| adddate(current_date, dayofyear(current_date)+1) dy |
9 | from | t500 |
10where id <= 4
11) x
12) y
SQL Server
Четыре строки сформируйте с помощью рекурсивного оператора WITH. Посредством функции DATEADD найдите начальную и конечную да! ты. Используя функцию DATEPART, установите соответствие между кварталом и начальной и конечной датами:
1with x (dy,cnt)
2as (
3 | select dateadd(d, (datepart(dy,getdate()) 1),getdate()), |
4 | 1 |
5 | from t1 |
6union all
7 select dateadd(m,3,dy), cnt+1
8from x
9 where cnt+1 <= 4
10)
11select datepart(q,dateadd(d, 1,dy)) QTR,
12dateadd(m, 3,dy) Q_start,
13dateadd(d, 1,dy) Q_end
14from x
15order by 1
Получение дат начала и конца кварталов года | 317 |
Обсуждение
DB2
Первый шаг – получить четыре строки (со значениями от 1 до 4), по од! ной для каждого квартала года. Вложенный запрос Х с помощью ран! жирующей функции ROW_NUMBER OVER и оператора FETCH FIRST возвращает из таблицы EMP всего четыре строки. Результаты показа! ны ниже:
select | row_number()over() rn |
from | emp |
fetch | first 4 rows only |
RN
1
2
3
4
Следующий шаг – найти первый день года и добавить к нему n меся! цев, гдеn – значение столбца RN, увеличенное в три раза (к первому дню года добавляется 3, 6, 9 и 12 месяцев). Результаты представлены ниже:
select | (current_date |
| (dayofyear(current_date) 1) day |
| + (rn*3) month) dy |
from | ( |
select | row_number()over() rn |
from | emp |
fetch | first 4 rows only |
| ) x |
DY
01 APR 2005
01 JUL 2005
01 OCT 2005
01 JAN 2005
На данный момент в столбце DY выведены даты, соответствующие сле! дующему дню после окончания каждого квартала. Следующий шаг – получить даты начала и конца каждого квартала. Чтобы получить да! ту окончания квартала, вычитаем один день из DY. Чтобы получить дату начала квартала, вычитаем три месяца из DY. Используем функ! цию QUARTER с параметром DY минус 1 (дата окончания каждого квартала), чтобы определить, какому кварталу соответствуют полу! ченные начальная и конечная даты.
318 | Глава 9. Работа с датами |
Oracle
Сочетание функций ROWNUM, TRUNC и ADD_MONTHS значительно упрощает решение. Чтобы найти дату начала каждого квартала, просто добавляем n месяцев к первому дню года, гдеn – это (ROWNUM – 1)×3 (что в результате дает 0, 3, 6, 9). Чтобы найти дату окончания каждого квартала, добавляемn месяцев к первому дню года, гдеn – это ROWNUM, умноженное на 3, и вычитаем один день. Отметим, что при работе с кварталами может быть полезным использование функций TO_CHAR и/или TRUNC с форматной маской ‘q’.
PostgreSQL
Первый шаг – с помощью функции DATE_TRUNC, исходя из текущей даты, получить первый день текущего года. Затем добавить n месяцев, гдеn – значение столбца RN (RN содержит значения, возвращенные функцией GENERATE_SERIES), умноженное на три, и вычесть один день. Результаты показаны ниже:
select | date(dy+((rn*3) * interval '1 month')) 1 as dy |
from | ( |
select | rn, date(date_trunc('year',current_date)) as dy |
from | generate_series(1,4) gs(rn) |
| ) x |
DY
31 MAR 2005
30 JUN 2005
30 SEP 2005
31 DEC 2005
Теперь после получения конечных дат всех кварталов остается послед! ний шаг – найти начальные даты. Для этого из каждого значения DY вычитаем два месяца и с помощью функции DATE_TRUNC переходим
кпервому дню полученного месяца. Применяя функцию TO_CHAR
кконечной дате каждого квартала (DY), определяем, какому кварталу соответствуют начальная и конечная даты.
MySQL
Первый шаг – найти первый день года, используя функции ADDDATE и DAYOFYEAR. Затем с помощью функции DATE_ADD добавить n ме! сяцев к первому дню года, гдеn – значение T500.ID, умноженное на три. Результаты представлены ниже:
select date_add(dy,interval (3*id) month) dy from (
select id, adddate(current_date, dayofyear(current_date)+1) dy
from t500 where id <= 4
Получение дат начала и конца кварталов года | 319 |
) x
DY
01 APR 2005
01 JUL 2005
01 OCT 2005
01 JAN 2005
На данный момент возвращены даты, соответствующие следующему дню после окончания каждого квартала. Чтобы найти последний день каждого квартала, просто вычтем по одному дню из всех значений DY. Следующий шаг – найти даты начала кварталов, для этого вычитаем по три месяца из каждого значения DY. Применяем функцию QUAR! TER к конечной дате каждого квартала, чтобы определить, какому кварталу соответствуют начальная и конечная даты.
SQL Server
Первый шаг – найти первый день года. Затем, используя функцию DATEADD, рекурсивно добавить по n месяцев, гдеn – номер текущей итерации, умноженный на три (всего выполняется четыре итерации, следовательно, добавляется 3 * 1 месяцев, 3 * 2 месяцев и т. д.). Ре! зультаты показаны ниже:
with x | (dy,cnt) |
as ( |
|
select | dateadd(d, (datepart(dy,getdate()) 1),getdate()), |
| 1 |
from | t1 |
union | all |
select | dateadd(m,3,dy), cnt+1 |
from | x |
where | cnt+1 <= 4 |
) |
|
select | dy |
from | x |
DY
01 APR 2005
01 JUL 2005
01 OCT 2005
01 JAN 2005
Значения DY соответствуют следующим дням после окончания каж! дого квартала. Чтобы получить даты окончания кварталов, просто вы! читаем один день из значений DY, используя функцию DATEADD. Чтобы найти дату начала каждого квартала, с помощью функции DATEADD вычитаем три месяца из каждого значения DY. Применяя функцию DATEPART к конечным датам кварталов, определяем, к ка! ким кварталам относятся полученные начальные и конечные даты.
320 | Глава 9. Работа с датами |
Определение дат начала и окончания заданного квартала
Задача
Год и квартал заданы в формате YYYYQ (четыре разряда – год, один разряд – квартал), требуется получить даты начала и окончания квар! тала.
Решение
Ключ к решению – применить к значению YYYYQ функцию вычисле! ния остатка от деления. (Поскольку год представлен четырьмя разря! дами, вместо нахождения остатка от деления можно просто извлечь последний разряд как подстроку.) Получив номер квартала, просто умножаем это значение на 3, чтобы найти месяц окончания квартала. В представленных решениях вложенный запрос Х возвращает все че! тыре сочетания года и кварталов. Результирующее множество вло! женного запроса Х следующее:
select 20051 as yrq from t1 union all select 20052 as yrq from t1 union all select 20053 as yrq from t1 union all select 20054 as yrq from t1
YRQ
20051
20052
20053
20054
DB2
Используйте функцию SUBSTR, чтобы возвратить год из вложенного запроса Х. С помощью функции MOD определите искомый квартал:1
1 select (q_end 2 month) q_start,
2(q_end+1 month) 1 day q_end
3from (
4 select date(substr(cast(yrq as char(4)),1,4) ||' '||
5rtrim(cast(mod(yrq,10)*3 as char(2))) ||' 1') q_end
6from (
7 | select | 20051 | yrq | from | t1 | union | all |
8 | select | 20052 | yrq | from | t1 | union | all |
9select 20053 yrq from t1 union all
1 В решениях для этой СУБД и всех следующих можно получить год, разде! лив значение YYYYQ на 10; этот вариант ближе к способу получения квар! тала путем вычисления остатка от деления, чем использование функции SUBSTR. –Примеч. науч. ред.
Определение дат начала и окончания заданного квартала | 321 |
10select 20054 yrq from t1
11) x
12) y
Oracle
Используйте функцию SUBSTR, чтобы возвратить год из вложенного запроса Х. С помощью функции MOD определите искомый квартал:
1 select add_months(q_end, 2) q_start,
2last_day(q_end) q_end
3from (
4 select to_date(substr(yrq,1,4)||mod(yrq,10)*3,'yyyymm') q_end
5from (
6 | select 20051 | yrq from dual union all | ||
7 | select 20052 | yrq from dual union all | ||
8 | select | 20053 | yrq | from dual union all |
9 | select | 20054 | yrq | from dual |
10) x
11) y
PostgreSQL
Используйте функцию SUBSTR, чтобы возвратить год из вложенного запроса Х. С помощью функции MOD определите искомый квартал:
1 select date(q_end (2*interval '1 month')) as q_start,
2date(q_end+interval '1 month' interval '1 day') as q_end
3from (
4 select to_date(substr(yrq,1,4)||mod(yrq,10)*3,'yyyymm') as q_end
5from (
6 select 20051 as yrq from t1 union all
7 select 20052 as yrq from t1 union all
8 select 20053 as yrq from t1 union all
9 select 20054 as yrq from t1
10) x
11) y
MySQL
Используйте функцию SUBSTR, чтобы возвратить год из вложенного запроса Х. С помощью функции MOD определите искомый квартал:
1 select date_add(
2adddate(q_end, day(q_end)+1),
3 | interval 2 month) q_start, |
4q_end
5from (
6 select last_day(
7str_to_date(
8concat(
9substr(yrq,1,4),mod(yrq,10)*3),'%Y%m')) q_end
10from (
11select 20051 as yrq from t1 union all
322 | Глава 9. Работа с датами |
12select 20052 as yrq from t1 union all
13select 20053 as yrq from t1 union all
14select 20054 as yrq from t1
15) x
16) y
SQL Server
Используйте функцию SUBSTRING, чтобы возвратить год из вложен! ного запроса Х. С помощью функции вычисления остатка от деления
(%) определите искомый квартал:
1 select dateadd(m, 2,q_end) q_start,
2dateadd(d, 1,dateadd(m,1,q_end)) q_end
3from (
4 select cast(substring(cast(yrq as varchar),1,4)+' '+
5cast(yrq%10*3 as varchar)+' 1' as datetime) q_end
6from (
7 | select 20051 | yrq from t1 | union all | |||
8 | select | 20052 | yrq | from | t1 | union all |
9 | select | 20053 | yrq | from | t1 | union all |
10select 20054 yrq from t1
11) x
12) y
Обсуждение
DB2
Первый шаг – найти год и квартал, с которыми будем работать. Извле! каем подстроку года из вложенного запроса X (X.YRQ), используя функцию SUBSTR. Чтобы получить квартал, находим остаток от деле! ния YRQ на 10. Вычислив номер квартала, умножаем его на 3 и полу! чаем последний месяц квартала. Результаты представлены ниже:
select | substr(cast(yrq as char(4)),1,4) yr, | ||
| mod(yrq,10)*3 mth |
| |
from | ( |
|
|
select | 20051 | yrq from t1 union all | |
select | 20052 | yrq from t1 | union all |
select | 20053 | yrq from t1 | union all |
select | 20054 | yrq from t1 |
|
| ) x |
|
|
YR MTH
2005 3
2005 6
2005 9
2005 12
На данный момент мы имеем год и последний месяц каждого кварта! ла. Используя эти значения, получим необходимые даты, в частности,
Определение дат начала и окончания заданного квартала | 323 |
первый день последнего месяца каждого квартала. С помощью опера! тора конкатенации «||» объединим год и месяц и затем с помощью функции DATE преобразуем полученное значение в дату:
select | date(substr(cast(yrq as | char(4)),1,4) ||' '|| | ||
| rtrim(cast(mod(yrq,10)*3 as char(2))) ||' 1') q_end | |||
from | ( |
|
|
|
select | 20051 | yrq from t1 | union all | |
select | 20052 | yrq from t1 | union all | |
select | 20053 | yrq from t1 | union all | |
select | 20054 | yrq from t1 |
|
|
| ) x |
|
|
|
Q_END
01 MAR 2005
01 JUN 2005
01 SEP 2005
01 DEC 2005
Значения столбца Q_END – первый день последнего месяца каждого квартала. Чтобы получить последний день месяца, добавим один ме! сяц к значению Q_END и вычтем один день. Чтобы найти дату начала каждого квартала, вычтем из Q_END два месяца.
Oracle
Первый шаг – найти год и квартал, с которыми будем работать. Извле! каем подстроку года из вложенного запроса X (X.YRQ), используя функцию SUBSTR. Чтобы получить квартал, находим остаток от деле! ния YRQ на 10. Вычислив номер квартала, умножаем его на 3 и полу! чаем последний месяц квартала. Результаты представлены ниже:
select | substr(yrq,1,4) yr, mod(yrq,10)*3 mth | |
from | ( |
|
select | 20051 | yrq from dual union all |
select | 20052 | yrq from dual union all |
select | 20053 | yrq from dual union all |
select | 20054 | yrq from dual |
| ) x |
|
YR MTH
2005 3
2005 6
2005 9
2005 12
На данный момент мы имеем год и последний месяц каждого кварта! ла. Используя эти значения, получим необходимые даты, в частности, первый день последнего месяца каждого квартала. С помощью опера! тора конкатенации «||» объединим год и месяц и затем с помощью функции TO_DATE преобразуем полученное значение в дату:
324 |
| Глава 9. Работа с датами |
select | to_date(substr(yrq,1,4)||mod(yrq,10)*3,'yyyymm') q_end | |
from | ( |
|
select | 20051 | yrq from dual union all |
select | 20052 | yrq from dual union all |
select | 20053 | yrq from dual union all |
select | 20054 | yrq from dual |
| ) x |
|
Q_END
01 MAR 2005
01 JUN 2005
01 SEP 2005
01 DEC 2005
Значения столбца Q_END – первый день последнего месяца каждого квартала. Чтобы получить последний день месяца, применим к значе! ниям Q_END функцию LAST_DAY. Чтобы найти дату начала каждого квартала, вычтем из Q_END два месяца, используя функцию ADD_ MONTHS.
PostgreSQL
Первый шаг – найти год и квартал, с которыми будем работать. Извле! каем подстроку года из вложенного запроса X (X.YRQ), используя функцию SUBSTR. Чтобы получить квартал, находим остаток от деле! ния YRQ на 10. Вычислив номер квартала, умножаем его на 3 и полу! чаем последний месяц квартала. Результаты представлены ниже:
select | substr(yrq,1,4) yr, mod(yrq,10)*3 mth | |
from | ( |
|
select | 20051 | yrq from dual union all |
select | 20052 | yrq from dual union all |
select | 20053 | yrq from dual union all |
select | 20054 | yrq from dual |
| ) x |
|
YR MTH
2005 3
2005 6
2005 9
2005 12
На данный момент мы имеем год и последний месяц каждого кварта! ла. Используя эти значения, получим необходимые даты, в частности, первый день последнего месяца каждого квартала. С помощью опера! тора конкатенации «||» объединим год и месяц и затем с помощью функции TO_DATE преобразуем полученное значение в дату:
select to_date(substr(yrq,1,4)||mod(yrq,10)*3,'yyyymm') q_end from (
select 20051 yrq from dual union all
Определение дат начала и окончания заданного квартала | 325 |
select 20052 yrq from dual union all select 20053 yrq from dual union all select 20054 yrq from dual
) x
Q_END
01 MAR 2005
01 JUN 2005
01 SEP 2005
01 DEC 2005
Значения столбца Q_END – первый день последнего месяца каждого квартала. Чтобы получить последний день месяца, добавим к значени! ям Q_END один месяц и вычтем один день. Чтобы найти дату начала каждого квартала, вычтем два месяца из Q_END. Представим конеч! ные результаты как даты.
MySQL
Первый шаг – найти год и квартал, с которыми будем работать. Извле! каем подстроку года из вложенного запроса X (X.YRQ), используя функцию SUBSTR. Чтобы получить квартал, находим остаток от деле! ния YRQ на 10. Вычислив номер квартала, умножаем его на 3 и полу! чаем последний месяц квартала. Результаты представлены ниже:
select | substr(yrq,1,4) yr, mod(yrq,10)*3 mth | |
from | ( |
|
select | 20051 | yrq from dual union all |
select | 20052 | yrq from dual union all |
select | 20053 | yrq from dual union all |
select | 20054 | yrq from dual |
| ) x |
|
YR MTH
2005 3
2005 6
2005 9
2005 12
На данный момент мы имеем год и последний месяц каждого кварта! ла. Используя эти значения, получим необходимые даты, в частности, последний день каждого квартала. С помощью функции CONCAT объ! единим год и месяц и затем с помощью функции STR_TO_DATE пре! образуем полученное значение в дату. Последний день каждого квар! тала найдем, применяя функцию LAST_DAY:
select last_day( str_to_date( concat(
substr(yrq,1,4),mod(yrq,10)*3),'%Y%m')) q_end
from (
326 | Глава 9. Работа с датами |
select 20051 as yrq from t1 union all select 20052 as yrq from t1 union all select 20053 as yrq from t1 union all select 20054 as yrq from t1
) x
Q_END
31 MAR 2005
30 JUN 2005
30 SEP 2005
31 DEC 2005
Поскольку мы уже получили даты окончания кварталов, осталось только найти даты их начала. Используем функцию DAY, чтобы полу! чить день месяца, на который выпадает окончание каждого из кварта! лов, и с помощью функции ADDDATE вычтем полученное значение из Q_END, чтобы получить последний день предыдущего месяца. Доба! вим один день и найдем первый день последнего месяца каждого квар! тала. Последний шаг – посредством функции DATE_ADD вычитаем два месяца из первого дня последнего месяца каждого квартала и по! лучаем дату начала каждого квартала.
SQL Server
Первый шаг – найти год и квартал, с которыми будем работать. Ис! пользуя функцию SUBSTR, извлекаем подстроку года из вложенного запроса X (X.YRQ). Чтобы получить квартал, находим остаток от деле! ния YRQ на 10. Вычислив номер квартала, умножаем его на 3 и полу! чаем последний месяц квартала. Результаты представлены ниже:
select | substring(yrq,1,4) yr, yrq%10*3 mth | |
from | ( |
|
select | 20051 | yrq from dual union all |
select | 20052 | yrq from dual union all |
select | 20053 | yrq from dual union all |
select | 20054 | yrq from dual |
| ) x |
|
YR MTH
2005 3
2005 6
2005 9
2005 12
На данный момент мы имеем год и последний месяц каждого кварта! ла. Используя эти значения, получим необходимые даты, в частности, первый день последнего месяца каждого квартала. С помощью опера! тора конкатенации «+» объединим год и месяц и затем с помощью функции CAST представим полученное значение как дату:
studfiles.net
Предложения со словосочетанием КОНЕЦ КВАРТАЛА
В-третьих, мы указали, что всё происходит в реальном времени, то есть целевая система не подводит итоги в конце квартала, чем мог бы заниматься рядовой специалист, а принимает и воплощает решения непосредственно в процессе потребления ресурсов. Пройдя до конца квартала, я повернула налево и зашагала по чистенькой широкой улице. За всю свою карьеру — как в DecisionTech, так и до этого — он ни разу не пришёл к концу квартала с плохими результатами. Двор, переходивший в квартал, был огромным, и к нам в разные годы присоединялись мальчишки и девчонки, жившие в разных концах квартала и за его пределами. А мне, бухгалтеру-экономисту, и так по горло хватало каждодневной рутины, да ещё — конец квартала.Привет! Меня зовут Лампобот, я компьютерная программа, которая помогает делать Карту слов. Я отлично умею считать, но пока плохо понимаю, как устроен ваш мир. Помоги мне разобраться!
Спасибо! Я стал чуточку лучше понимать мир эмоций.
Я уже понял, что дружеские слова — это нечто положительное. Помоги мне понять, что позволяет оценить дружеские слова как положительное — эмоции (чувства, переживания) или практичность (выгода, полезность, правильность)?
Больше эмоции,чем практичность
Скорее практичность,чем эмоции
Абсолютнаяпрактичность
Это изначальнонейтральное
— Спрячьтесь в восточном конце квартала... — бабушка внезапно осеклась, не сводя взгляда с одного из окон. Три тёмные фигуры стояли в конце квартала и в упор смотрели на них. Несколько соседей, женщина с другого конца квартала, ещё какие-то люди, которых он не знает, кучками стоят на тротуаре и на проезжей части, пустые баки у ног. В конце квартала сидела большая чёрная собака. Несколько человек рванулись к двери, а остальные разбежались в разные концы квартала. Надеюсь, что в конце квартала ваши усилия скажутся на росте продаж. Обещанное зелье было вручено уже в сумерках, после заката, в одной из неприметных подворотен в конце квартала. Вскоре я оказался спрятан среди печных труб и воздуховодов многоквартирного жилого дома в конце квартала. Через минуту она уже стояла в конце квартала многоквартирных домов. До конца квартала две недели, а у вас до плана не достаёт, — тычет пальцем по кнопкам калькулятора, — восемьдесят процентов! В конце квартала дома стали понижаться, образуя своего рода гигантскую лестницу, некоторые пролёты которой были превращены в террасы и огорожены перилами. Когда та появилась, в конце квартала подруги поспешили ей навстречу, но подойдя ближе увидели и поняли, что ошиблись — не она. Постепенно пространство звало меня всё дальше и дальше, я стала доходить до конца квартала и в одну и в другую сторону, потом даже поворачивать за угол. Правда, конец квартала не давал мне возможности как следует подготовиться, но я уже увлёкся и не мог остановиться. Не теряя больше времени ни минуты, я вылез в окно и спустился по водосточной трубе на улицу и тут-же в конце квартала завыла полицейская сирена. Так их, с одной стороны, всегда хоть отбавляй, а с другой... Да что он, очередного отчёта, что ли, не составит к концу квартала? Прищурившись, она подошла почти к самому краю балкона и уставилась на далёкие огни площади в конце квартала. Поэтому перед концом квартала у нас появлялись гонцы с мест и норовили водить нас по ресторанам. Как так можно?! Что за безответственность?! И это в конце квартала! В другом конце квартала мужчина запихивал в ботинки старую газету. Чего доброго, в конце квартала сможет нашить себе уголок на рукав. В этот самый момент с дальнего конца квартала, настёгивая лошадей короткими тугими плётками, в их сторону понеслась тройка всадников. На работе, как всегда в конце квартала, была запарка. Пролетев до конца квартала, вампирша повернула назад. Прогнозировался убыток в размере 50 центов на акцию к концу квартала, который оканчивался завтра. Я дошёл до конца квартала и на минуту остановился, впитывая холодный воздух. Дело было в конце квартала, в момент так называемой штурмовщины, когда план выполнялся любой ценой. Это произошло в конце квартала. Взгляд мой упал на вывеску магазина в конце квартала. Это же был конец квартала, понимаешь... а у меня не хватало двадцать тысяч к плану, понимаешь... чтоб закрыть квартал. Он теперь на другом конце квартала, и уж, разумеется, его не видать вам, как своих ушей. Правда, сейчас конец квартала, в следующем квартале, может быть, сумеем выйти из положения. По крышам сараев можно было почти до конца квартала промчаться — через семь дворов. И вот тогда-то увидел в конце квартала знакомые косы. Так, успокаивая себя, я дошёл до конца квартала, где в окружении высоких деревьев стоял пятиэтажный дом. В конце квартала, куда теперь направлялись драгуны, стояло облако пыли — там совсем недавно рухнул крайний дом. Они вышли из дома и направились к концу квартала, где должен был быть продовольственный магазин. В конце квартала виднелись пустые ячейки для велосипедов. Ещё одно скопление транспортных средств она увидела лишь в конце квартала. Я тебе верну в конце квартала. Точнее, до конца квартала. Когда его спрашивают, почему он не ищет свои ключи в конце квартала, он отвечает: «Потому что здесь светлее». Вон там, в конце квартала, наш сосед, с которым я никогда не встречалась и не встречусь, открывает входную дверь и выходит в ночь. И тут же вижу, как из-за угла в конце квартала выруливает зеленорубашечник. Я его знал совсем недолго — несколько раз пересекались в головном офисе, когда приходилось сдавать документацию и отчётность в конце квартала.Оставить комментарий
Текст комментария:
Дополнительно:
kartaslov.ru