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

1 ... 85 86 87 [ 88 ] 89 90 91 ... 219


Oracle

С помощью функции TRUNC найдите начало текущего года и, используя функцию ADD MONTHS, определите начало следующего года:

1 select add months(trunc(sysdate,y),12) - trunc(sysdate,y)

2 from dual

PostgreSQL

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

1 select cast((curr year + interval 1 year) as date) - curr year

2 from (

3 select cast(date trunc(year,current date) as date) as curr year

4 from t1

5 ) x

MySQL

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

1 select datediff((curr year + interval 1 year),curr year)

2 from (

3 select adddate(current date,-dayofyear(current date)+1) curr year

4 from t1

5 ) x

SQL Server

С помощью функции DATEADD найдите первый день текущего года. Чтобы возвратить число дней в текущем году, используйте DATEDIFF:

1 select datediff(d,curr year,dateadd(yy,1,curr year))

2 from (

3 select dateadd(d,-datepart(dy,getdate())+1,getdate()) curr year

4 from t1

5 ) x

Обсуждение

Первый шаг - найти первый день текущего года. Для определения количества прошедших дней текущего года используется функция DAY-OFYEAR (день года). Вычитая это значение из текущей даты, получаем последний день прошлого года и затем добавляем 1:

select (current date -

dayofyear(current date) day + 1 day) curr year



from t1

CURR YEAR

01-JAN-2005

Теперь, имея первый день текущего года, просто прибавляем к нему один год, тем самым получаем первый день следующего года. Затем вычитаем начало текущего года из начала следующего года.

Oracle

Первый шаг - найти первый день текущего года, что можно без труда сделать, вызвав встроенную функцию TRUNC и передав в качестве второго аргумента Y (таким образом получая, исходя из текущей даты, первый день текущего года):

select select trunc(sysdate,y) curr year from dual

CURR YEAR 01-JAN-2005

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

PostgreSQL

Начинаем с получения первого дня текущего года. Для этого вызываем функцию DATE TRUNC следующим образом:

select cast(date trunc(year,current date) as date) as curr year from t1

CURR YEAR

01-JAN-2005

Теперь можно без труда добавить год, чтобы получить первый день следующего года, и тогда останется только вычесть одну дату из другой. Вычитать следует более раннюю дату из более поздней. В результате будет получено количество дней в текущем году.

MySQL

Первый шаг - найти первый день текущего года. С помощью функции DAYOFYEAR находим количество прошедших дней текущего года. Вычитаем это значение из текущей даты и добавляем 1:

select adddate(current date,-dayofyear(current date)+1) curr year from t1

CURR YEAR



01-JAN-2005

Получив первый день текущего года, добавляем к нему один год, в результате чего получаем первый день следующего года. Затем вычитаем начало текущего года из начала следующего года. В итоге находим число дней в текущем году.

SQL Server

Первый шаг - найти первый день текущего года. Вычитаем из текущей даты количество прошедших дней года и добавляем 1, используя

функции DATEADD и DATEPART:

select dateadd(d,-datepart(dy,getdate())+1,getdate()) curr year from t1

CURR YEAR

01-JAN-2005

Получив первый день текущего года, добавляем к нему один год, в результате чего получаем первый день следующего года. Затем вычитаем начало текущего года из начала следующего. В итоге находим количество дней в текущем году.

Извлечение единиц времени из даты Задача

Требуется разложить текущую дату на шесть частей: день, месяц, год, секунды, минуты и часы. Результаты должны быть возвращены в численном виде.

Решение

В данном рецепте текущая дата выбрана для иллюстрации, он свободно может использоваться с другими датами. В главе 1 говорилось о важности изучения и использования преимуществ встроенных функций, предоставляемых СУБД. Это особенно актуально, когда дело касается дат. Существует множество других способов извлечения единиц времени из даты, кроме представленных в данном рецепте. Очень полезно поэкспериментировать с разными техниками и функциями.

DB2 реализует ряд встроенных функций, которые упрощают задачу по извлечению частей даты. Имена функций HOUR (час), MINUTE (минута), SECOND (секунда), DAY, MONTH и YEAR соответствуют возвращаемым ими единицам измерения времени. Если требуется получить день, используется функция DAY, час - функция HOUR и т. д. Например:



1 ... 85 86 87 [ 88 ] 89 90 91 ... 219

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