Помогите с запросом, плиз.

  1. 8 г. назад

    Нужно запросом выбрать только ночные записи или только дневные + за период.
    Запрос к MySQL вот такой: select * from asteriskcdrdb.call WHERE utime >= ДатаДляЗапросаНач AND utime <= ДатаДляЗапросаКон
    Как такое можно замутить?

    Ответы: (24)
  2. select * from asteriskcdrdb.call WHERE utime >= ДатаДляЗапросаНач AND utime <= ДатаДляЗапросаКон and HOUR(utime) in (6,7,8,9,10,11,12)
    утренние выбрал

    Ответы: (3) (6) (7)
  3. between красивее юзать

  4. (1) нафига, если дата - это дата+время

    Ответы: (4)
  5. (3) вопрос не понятен сказали выбрать утренние записи

    Ответы: (5)
  6. (4) уже понял, это если период больше одного дня брать

  7. Нужны как ночные так и утренние за период.
    (1) Спасибо, буду пробовать.

    Ответы: (8)
  8. (1) Что-то не хочет работать. Может потому, что там время вот такой формат имеет '19700101000000'; //00:00, Jan 1, 1970 UTC.
    Это начальное время, а потом прибавляются секунды.
    В запросе ДатаДляЗапросаНач = 1462050000, ДатаДляЗапросаКон = 1464728399

    Может быть, что функция HOUR(utime) не отрабатывает?

  9. (6) + это делаю отчет с 01 по 31 мая.

  10. FROM_UNIXTIME(u_Time)

    Ответы: (11)
  11. Сделал вот такое условие WHERE utime >= ДатаДляЗапросаНач AND utime <= ДатаДляЗапросаКон AND utime = 1463596502

    Где 1463596502 = 18.05.2016 21:35:02
    Вышла эта запись.

  12. (9) а это где влепить?

    Ответы: (12)
  13. (11)https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_hour
    в доках почитай.
    но насколько я понял, HOUR работает от time, а у тебя unix_time.

    Ответы: (13)
  14. (12) ну да юникс тайм. И что теперь делать таблицу всех возможных времен которые нужны?

    Ответы: (14)
  15. Fedot И что теперь делать таблицу всех возможных времен которые нужны?

    чего? зачем?

  16. HOUR(FROM_UNIXTIME(utime)) вот так вроде заработало. Спасибо огромное за помощь.

    Ответы: (16) (17)
  17. (15) WHERE utime between ДатаДляЗапросаНач AND ДатаДляЗапросаКон

    Ответы: (17)
  18. alex_shkut (15) WHERE utime between ДатаДляЗапросаНач AND ДатаДляЗапросаКон

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

    Ответы: (19)
  19. Вообщем вот такая конструкции норм работает HOUR(FROM_UNIXTIME(utime)) in (21,22,23,0,1,2,3,4,5,6,7)

  20. (17) Остальное мог и сам додумать:
    WHERE utime between ДатаДляЗапросаНач AND ДатаДляЗапросаКон AND HOUR(FROM_UNIXTIME(utime)) in (21,22,23,0,1,2,3,4,5,6,7)

    Ответы: (20)
  21. (19) а понял, лучше битвин использовать чем больше меньше, так?

  22. а кто-нибудь объяснит, чем лучше between, чем <= >= ?

    Ответы: (22) (23) (26)
  23. (21) чисто эстетически, имхо

  24. (21) вот здесь что-то написано про индексы
    http://tigor.com.ua/blog/2008/08/23/date_comparison_by_between_operator_of_mysql/

    Ответы: (25) (28)
  25. (0) А для чего тебе решать такую задачу объясни пжл а то я не врублюсь никак

  26. (23) думаешь, оператор > не использует индексы? это вряд ли

    Ответы: (28)
  27. (21) да ни чем.

  28. у меня есть отчет про пропущенным входящим звонкам. Вот босы захотели формировать не только за период, а еще за время.
    Ну т.е. хотят посмотреть все пропущенные звонки за месяц + которые только ночью приходили.

  29. andrewks (23) думаешь, оператор > не использует индексы? это вряд ли

    не знаю, по ссылке написано, что все-же битвин якобы лучше :-)

    Ответы: (30) (33)
  30. профилировщик надо гонять

  31. (28) где там написано, что битвин оптимальнее сравнения?

    Ответы: (31)
  32. (30) написано, что самый лучший 4.-й вариант с битвин.
    Но мое ИМХО - какая нафиг разница :-)

  33. Еще почитал - пишут, что монопенисуально что использовать.

  34. (28) ну смотри, чисто логически если:
    если битвин 0..10 будет 2 сравнения
    если ин (0, 1, 2, 3,4,5,6) будет несколько сравнений.

    Ответы: (34) (35)
  35. 19.05.2016 17:29:17 отредактировано sf

    Курильщик если ин (0, 1, 2, 3,4,5,6) будет несколько сравнений.

    in - это вообще операция умножения (имхо)
    и попробуй массив (21,22,23,0,1,2,3,4,5,6,7) в IN перевести

  36. Курильщик если битвин 0..10 будет 2 сравнения

    если >= 0 или <= 10 будет тоже два сравнения, не?

    Ответы: (37)
  37. вы какой то фигней занялись

    Ответы: (38)
  38. +(35) т.е. эти две конструкции должны отрабатывать совершенно одинаково
    1. WHERE utime >= ДатаДляЗапросаНач AND utime <= ДатаДляЗапросаКон
    2. WHERE utime between ДатаДляЗапросаНач AND ДатаДляЗапросаКон

  39. sda553 вы какой то фигней занялись

    я все, поехал к дому. Отходняки после ДР

или зарегистрируйтесь чтобы ответить!