|
Программирование >> Преобразование значений null
Это может вызвать проблему, если в следующем месяце меньше дней, чем текущая дата. Поэтому более корректно сначала вычесть количество прошедших в текущем месяце дней и получить последний день предыдущего месяца, а только потом добавить один месяц для получения последнего дня текущего месяца. - Примеч. науч. ред. бы найти первый день месяца. Чтобы получить последний день, добавляем один месяц к текущей дате и вычитаем из полученного результата значение, возвращенное функцией DAY для текущей даты, опять используя функции DAY и DATEADD: 1 select dateadd(day,-day(getdate())+1,getdate()) firstday, 2 dateadd(day, 3 -day(getdate()), 4 dateadd(month,1,getdate())) lastday 5 from t1 Обсуждение DB2 Для получения первого дня месяца используем функцию DAY: она возвращает день соответственно переданной в нее дате. Если из текущей даты вычесть значение, возвращенное DAY(CURRENT DATE), то получаем последний день предыдущего месяца; добавляем к нему один день и имеем первый день текущего месяца. Чтобы найти последний день месяца, добавляем один месяц к текущей дате. Тем самым мы попадем в то же число следующего месяца (независимо от того, сколько дней в текущем месяце)1. Затем вычитаем значение, возвращенное DAY(CURRENT DATE), чтобы получить последний день текущего месяца. Oracle Чтобы найти первый день текущего месяца, используем функцию TRUNC, передавая в нее в качестве второго аргумента mm , что обеспечит возвращение первого дня месяца соответственно текущей дате. Чтобы найти последний день, просто используем функцию LAST DAY. PostgreSQL Чтобы найти первый день текущего месяца, используем функцию DA-TE TRUNC, передавая в нее в качестве второго аргумента month , что обеспечит возвращение первого дня месяца соответственно текущей дате. Чтобы найти последний день, добавляем один месяц к первому дню месяца и вычитаем один день. MySQL Чтобы найти первый день текущего месяца, используем функцию DAY. Она возвращает день месяца соответственно переданной дате. Та же проблема, что и в решении для DB2. Поэтому сначала следует вычесть количество прошедших в текущем месяце дней и получить последний день предыдущего месяца, а только потом добавить один месяц. - Примеч. науч. ред. Если из текущей даты вычесть значение, возвращенное DAY(CUR-RENT DATE), получаем последний день предыдущего месяца; добавляем один день и в итоге имеем первый день текущего месяца. Последний день находим просто с помощью функции LAST DAY. SQL Server Чтобы найти первый день текущего месяца, используем функцию DAY. Она возвращает день месяца соответственно переданной в нее дате. Если из текущей даты вычесть значение, возвращенное DAY(GET-DATE()), получаем последний день предыдущего месяца; добавляем один день и в итоге имеем первый день текущего месяца. Последний день находим с помощью функции DATEADD. Добавляем один месяц к текущей дате, затем вычитаем значение, возвращенное DAY(GET-DATE()), и получаем последний день текущего месяца.1 Выбор всех дат года, выпадающих на определенный день недели Задача Требуется найти все даты года, соответствующие заданному дню недели. Например, стоит задача сформировать список пятниц текущего года. Решение Независимо от СУБД основой решения являются возвращение всех дней текущего года и выбор из них только тех, которые соответствуют интересующему дню недели. В приведенных примерах извлекаются все пятницы года. Рекурсивным оператором WITH возвращаем все дни текущего года. Затем с помощью функции DAYNAME выбираем только пятницы: 1 with x (dy,yr) 2 as ( 3 select dy, year(dy) yr 4 from ( 5 select (current date - 6 dayofyear(current date) days +1 days) as dy 7 from t1 8 ) tmp1 9 union all 10 select dy+1 days, yr 11 from x 12 where year(dy +1 day) = yr 13 ) 14 select dy 15 from x 16 where dayname(dy) = Friday Oracle Рекурсивным оператором CONNECT BY возвращаем все дни текущего года. Затем с помощью функции TO CHAR выбираем только пятницы: 1 with x 2 as ( 3 select trunc(sysdate,y)+level-1 dy 4 from t1 5 connect by level <= 6 add months(trunc(sysdate,y),12)-trunc(sysdate,y) 8 select * 9 from x 10 where to char( dy, dy) = fri PostgreSQL Используя функцию GENERATE SERIES, возвращаем все дни текущего года. Затем с помощью функции TO CHAR выбираем только пятницы: 1 select cast(date trunc(year,current date) as date) 2 + x.id as dy 3 from generate series ( 4 0, 5 ( select cast( 6 cast( 7 date trunc(year,current date) as date) 8 + interval 1 years as date) 9 - cast( 10 date trunc(year,current date) as date) )-1 11 ) x(id) 12 where to char( 13 cast( 14 date trunc(year,current date) 15 as date)+x.id,dy) = fri MySQL Используем сводную таблицу T500, чтобы возвратить все дни текущего года. Затем с помощью функции DAYNAME выбираем только пятницы: 1 select dy 2 from (
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0.002
При копировании материалов приветствуются ссылки. |