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

ТЕМА:

Oracle. Как отсортировать? 12 года 9 мес. назад #1615

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

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

Re: Oracle. Как отсортировать? 12 года 9 мес. назад #1616

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

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

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

Re: Oracle. Как отсортировать? 12 года 9 мес. назад #1617

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

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

Re: Oracle. Как отсортировать? 12 года 9 мес. назад #1618

Ну и придумал же ты)

Во-первых, 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. Как отсортировать? 12 года 9 мес. назад #1619

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

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

Re: Oracle. Как отсортировать? 12 года 9 мес. назад #1620

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


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

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

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

  • Страница:
  • 1
  • 2
Время создания страницы: 0.265 секунд