Добро пожаловать, Гость
Логин: Пароль: Запомнить меня
Теоретические аспекты и практические реализации создания, внедрения и использования баз данных, СУБД, хранилищ.
  • Страница:
  • 1
  • 2

ТЕМА: Oracle. Как отсортировать?

Oracle. Как отсортировать? 12 июль 2011 08:19 #1615

  • Sanyok
  • Sanyok аватар Автор темы
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 37
  • Спасибо получено: 0
Привет.
Нужно отсортировать запрос по разнице дат без учета года. Проще говоря, выдать список людей, у которых день рождения в ближайшие Х дней, отсортированный по дням рождения. Есть идеи?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Oracle. Как отсортировать? 12 июль 2011 08:22 #1616

  • Chlo
  • Chlo аватар
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 43
  • Спасибо получено: 0
Берем дату добавляем интервал, дальше ищем всех у кого день и месяц совпали с полученной датой.
Какие еще нужны идеи?

DATEDIFF и иже с ними, там функций на все случаи жизни.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Oracle. Как отсортировать? 12 июль 2011 08:29 #1617

  • Sanyok
  • Sanyok аватар Автор темы
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 37
  • Спасибо получено: 0
найти не проблема, проблема в сортировке. Через пару дней отчет, есть три человека, один родился 31.07, второй 30.07, третий 11.07 надо чтобы вывелось именно в этом порядке, потому что ближайшее 11.07 наступит только в следующем году.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Oracle. Как отсортировать? 13 июль 2011 04:03 #1618

  • Chlo
  • Chlo аватар
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 43
  • Спасибо получено: 0
Ну и придумал же ты)

Во-первых, 11.07 к тебе в список попасть не должен.
SQL:

     SELECT day as D, month as M,
     (CASE DATE(12.07.0) < DATE(D.M.0) THEN 1 ELSE 0 END) AS Y
     FROM table
     ORDER BY DATEFORMAT(DATE(D, M, Y), 'yyyy-mm-dd')


ну по-моему как-то так.
За имена функций и корректность синтаксиса не отвечаю. Ну и, возможно, потребуется подзапрос, чтобы распознался Y в ORDER BY

Вместо 0 можешь использовать текущий год. Тогда в THEN будет CURYEAR() +1, а в ELSE CURYEAR()

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Oracle. Как отсортировать? 13 июль 2011 04:04 #1619

  • Bella
  • Bella аватар
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 47
  • Спасибо получено: 0
Привет.
А что если в базе разделить дату рождения на составляющие?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Oracle. Как отсортировать? 13 июль 2011 04:07 #1620

  • Sanyok
  • Sanyok аватар Автор темы
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 37
  • Спасибо получено: 0

А что если в базе разделить дату рождения на составляющие?


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

Chlo, примерно так и придется, видимо.
Странно, я думал это довольно распространенная задача, и у нее должно быть простое решение. А вот видимо нет.
Спасибо.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

  • Страница:
  • 1
  • 2