|
Программирование >> Преобразование значений null
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
На данный момент мы имеем год и последний месяц каждого квартала. Используя эти значения, получим необходимые даты, в частности, первый день последнего месяца каждого квартала. С помощью оператора конкатенации + объединим год и месяц и затем с помощью функции CAST представим полученное значение как дату:
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки. |