Программирование >>  Преобразование значений null 

1 ... 102 103 104 [ 105 ] 106 107 108 ... 219


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



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 b 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 (



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

select

20052

select

20053

select

20054

2005

2005

2005

2005

На данный момент мы имеем год и последний месяц каждого квартала. Используя эти значения, получим необходимые даты, в частности, первый день последнего месяца каждого квартала. С помощью оператора конкатенации + объединим год и месяц и затем с помощью функции CAST представим полученное значение как дату:



1 ... 102 103 104 [ 105 ] 106 107 108 ... 219

© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки.
Яндекс.Метрика