|
|
|
Как вывести диапазон дат
|
|||
|---|---|---|---|
|
#18+
Здравствуйте Как вывести диапазон дат например за месяц. Можно ли это сделать Select`ом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2014, 11:32 |
|
||
|
Как вывести диапазон дат
|
|||
|---|---|---|---|
|
#18+
alberto djovaliЗдравствуйте Как вывести диапазон дат например за месяц. Можно ли это сделать Select`ом? а ты правильно понимаешь слово "диапазон" ? диапазон - это 2-е даты : "С" и "По" - вывести "можно", наверняка и сам справишься но тебе, скорее всего, нужно другое ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2014, 12:09 |
|
||
|
Как вывести диапазон дат
|
|||
|---|---|---|---|
|
#18+
Диапазон я имел ввиду список дат С и По. Без таблицы можно это сделать Select`ом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2014, 12:28 |
|
||
|
Как вывести диапазон дат
|
|||
|---|---|---|---|
|
#18+
alberto djovaliДиапазон я имел ввиду список дат С и По. Без таблицы можно это сделать Select`ом? можно, идея такая (это для МС СКЛ, - переписать для МуСКЛ можно без проблем, тут нет ничего специфического) Код: sql 1. 2. 3. 4. 5. 6. 7. 8. но лучше, для таких случаев, иметь в БД таблицу чисел от 0 до 100...0 ещё не раз пригодится ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2014, 12:52 |
|
||
|
Как вывести диапазон дат
|
|||
|---|---|---|---|
|
#18+
А как просто вывести диапазон чисел например? Select выдаёт одну строку, а как сделать чтобы выдал несколько? Сейчас: Select 1+1 Результат: 2 Требуется: Select 1..5 Результат: 1 2 3 4 5 Я так понимаю синтаксис не допускает так сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2014, 13:10 |
|
||
|
Как вывести диапазон дат
|
|||
|---|---|---|---|
|
#18+
alberto djovaliЯ так понимаю синтаксис не допускает так сделать? Глаза вам на что даны? Внутренний юнион то самое вам и выведет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2014, 06:31 |
|
||
|
Как вывести диапазон дат
|
|||
|---|---|---|---|
|
#18+
Не мое, но может кому-то пригодится ) Код: sql 1. 2. 3. 4. 5. 6. 7. 8. где big_table - большая таблица ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2014, 20:20 |
|
||
|
Как вывести диапазон дат
|
|||
|---|---|---|---|
|
#18+
javajdbc, работать-то оно работает, но алгоритм! 1)фулскан большой таблицы 2)материализация результата (особенно замечательно, если исходная таблица - с блобами, да побольше) 3)фильтрация результата Это же facepalm, возможно даже двойной! Да и условие фильтрации убоищное. Короче, вердикт - сжечь и закопать поглубже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2014, 08:24 |
|
||
|
Как вывести диапазон дат
|
|||
|---|---|---|---|
|
#18+
Ах да, чуть не забыл, там ещё и юнион вместо юнион алл = дополнительные расходы на проверку уникальности, при том что она и так самим построением гарантирована. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2014, 08:25 |
|
||
|
Как вывести диапазон дат
|
|||
|---|---|---|---|
|
#18+
javajdbcничего из вышестояшего не оправдывает Кто-то считает так, кто-то иначе. Моё мнение таково - это "решение" может увидеть и, не сильно разобравшись, применить кто-то, кто придёт с аналогичной проблемой позже. И поимеет на том кучу геморроя. Причины озвучены выше. А мы соответственно будем выглядеть сборищем индусов. Это первое. Второе - возможет вариант, что big_table в некие технологические моменты будет truncated или вообще удалена/переименована, итог в обоих случаях вполне предсказуем - и печален. Каждый аргумент уже сам по себе является достаточным основанием для отнесения этого "решения" к категории БСК. Вместе - тем более. Самым логичным и правильным решением я считаю решение qwerty112 - с той лишь модификацией, что достаточно оставить генерацию чисел от 0 до 5, вполне будет достаточно, и заменить конкатенацию и все CAST вычислением a+b*6. Кстати, его второй, неявный, совет - относительно помещения в (служебную) БД таблицы numbers (я, правда, предпочитаю таблицу digits - от 0 до 9),- сам по себе весьма полезен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2014, 11:21 |
|
||
|
Как вывести диапазон дат
|
|||
|---|---|---|---|
|
#18+
Akina, Поддержу. Когда-то, года три назад, начинал осваивать Мускуль и столкнулся с таким же или похожим вопросом. Каково было мое удивление, что тут надо делать union из чиселок чтобы сгенерить последовательность... сделал табличку 0..9 и тоже `digits`. И теперь она за мной так и кочует уже из одного проекта в другой. Очень полезная табличка. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2014, 14:12 |
|
||
|
Как вывести диапазон дат
|
|||
|---|---|---|---|
|
#18+
Согласен со всеми постами, написанными после моего. Не оправдание, но все же: Пример взял здесь: http://forum.shelek.ru/index.php/topic,25277.msg242175.html Нужно было вывести диапазон дат за некий (небольшой период). Мое условие в отборе: диапазон дат за 5 лет, начиная с 01.01.2014. big_table - таблица с 1-м полем и 3К записей. Результат 0,05 сек. Так как я посчитал его приемлемым, "запостил" селект для размышления топикстартеру. Теперь он (да и я) знает, что так делать не следует. Вариант с внутренним UNION ALL или табличкой digits мне самому больше нравится, но, если честно, к моменту написания того поста - у меня не получалось его реализовать, поэтому запостил что было. Спасибо за конструктивную критику! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2014, 14:28 |
|
||
|
Как вывести диапазон дат
|
|||
|---|---|---|---|
|
#18+
В MS SQL такая табличка устанавливается при инсталляции сервера:) master.dbo.spt_values Доступна на чтение для всех пользователей, содержит много чего, в т.ч. числа от 0 до 2047 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2014, 14:39 |
|
||
|
Как вывести диапазон дат
|
|||
|---|---|---|---|
|
#18+
доступна даже на http://sqlfiddle.com/#!6/d41d8/14646 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2014, 14:44 |
|
||
|
Как вывести диапазон дат
|
|||
|---|---|---|---|
|
#18+
Модератор: Попрошу сильно не распаляться, ближе к вечеру/завтра излишние эмоции почищу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2014, 17:26 |
|
||
|
Как вывести диапазон дат
|
|||
|---|---|---|---|
|
#18+
Не знаю, появится ли топикстартер. С MySql я не работаю, просто вопрос показался интересным, вот и решил "помочь чем смогу" ) Запрос qwerty112 для MySql переписал так: Код: sql 1. 2. 3. 4. 5. 6. Тут ми имеем ограничение в 99 дней, про что qwerty112 писал qwerty112но лучше, для таких случаев, иметь в БД таблицу чисел от 0 до 100...0 ещё не раз пригодится Со слов Akina: Akinaдостаточно оставить генерацию чисел от 0 до 5, вполне будет достаточно, и заменить конкатенацию и все CAST вычислением a+b*6 Если не сложно, помогите, пожалуйста, добить для MySql пример в части "a+b*6". Возможно еще кому то на sql.ru пригодится :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2014, 18:05 |
|
||
|
Как вывести диапазон дат
|
|||
|---|---|---|---|
|
#18+
Ну поскольку у тебя ТРИ месяца - придётся оставить UNION-ы от 0 до 9. Просто в двух местах замени Код: sql 1. на Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2014, 18:52 |
|
||
|
Как вывести диапазон дат
|
|||
|---|---|---|---|
|
#18+
Alexey_UA, Код: sql 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2016, 15:19 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=39335480&tid=1831270]: |
0ms |
get settings: |
7ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
153ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
33ms |
get tp. blocked users: |
1ms |
| others: | 215ms |
| total: | 432ms |

| 0 / 0 |
