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

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


10 select 20054 yrq from t1

11 ) x

12 ) y

Oracle

Используйте функцию SUBSTR, чтобы возвратить год из вложенного запроса Х. С помощью функции MOD определите искомый квартал:

last day(q end) q end

select

from

select

from

select

select

select

select

) x ) y

PostgreSQL

Используйте функцию SUBSTR, чтобы возвратить год из вложенного запроса Х. С помощью функции MOD определите искомый квартал:

select

date(q end-(2*interval 1 month)) as q start,

date(q end+interval 1 month-interval 1 day) as q end

from

select

to date(substr(yrq,1,4)mod(yrq,10)*3,yyyymm) as 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

MySQL

Используйте функцию SUBSTR, чтобы возвратить год из вложенного запроса Х. С помощью функции MOD определите искомый квартал:

1 select date add(

2 adddate(q end,-day(q end)+1),

3 interval -2 month) q start,

4 q end

5 from (

b select last day(

7 str to date(

8 concat(

9 substr(yrq,1,4),mod(yrq,10)*3),%Y%m)) q end

10 from (

11 select 20051 as yrq from t1 union all



12 select 20052 as yrq from t1 union all

13 select 20053 as yrq from t1 union all

14 select 20054 as yrq from t1

15 ) x

16 ) y

SQL Server

Используйте функцию SUBSTRING, чтобы возвратить год из вложенного запроса Х. С помощью функции вычисления остатка от деления (%) определите искомый квартал:

1 select dateadd(m,-2,q end) q start,

dateadd(d,-1,dateadd(m,1,q end)) q end

from

select

cast(substring(cast(yrq as varchar),1,4)+-+

cast(yrq%10*3 as varchar)+-1 as datetime) 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

Обсуждение 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

select

20052

select

20053

select

20054

2005

2005

2005

2005

На данный момент мы имеем год и последний месяц каждого квартала. Используя эти значения, получим необходимые даты, в частности,



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

select date(substr(cast(yrq as char(4)),1,4) -

rtrim(cast(mod(yrq,10)*3 as char(2))) 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 b 2005 9 2005 12

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



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

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