ФорумПрограммированиеPHP для идиотов → mysql выбор записи по диапазону (дата)

mysql выбор записи по диапазону (дата)

  • pasha

    Сообщения: 1048 Репутация: N Группа: Адекваты

    Spritz 29 апреля 2008 г. 13:08

    SELECT something FROM tbl_name
    WHERE TO_DAYS(&#39;2008-04-28&#39;) - TO_DAYS(date_register) <= &#39;2008-04-29&#39;;


    Т.е делаю выборку данных по диапазону от 2008-04-28 по 2008-04-29

    Почему то возвращает все записи…

    http://www.mysql.ru/docs/man/Date_and_time_functions.html не посылать (:

    простите за наглость и тупизм
  • ghost

    Сообщения: ? Репутация: N Группа: Джедаи

    Spritz 29 апреля 2008 г. 13:19, спустя 10 минут 59 секунд

    &#39;2008-04-29&#39; - это, как я понимаю, допустимая разность в днях.. ну логично, попадают все..


    http://www.mysql.ru/docs/man/Date_and_time_functions.html не посылать (:

    а зря, там кстати всё написано, причем с примерами..
  • pasha

    Сообщения: 1048 Репутация: N Группа: Адекваты

    Spritz 29 апреля 2008 г. 13:46, спустя 26 минут 53 секунды

    Здесь не понятно почему …

    SELECT name, date_register
    FROM user
    WHERE TO_DAYS( &#39;2008-04-29&#39; ) >= TO_DAYS( &#39;2008-04-28&#39; )


    … возвращает 2008-04-30
  • md5

    Сообщения: 11951 Репутация: N Группа: в ухо

    Spritz 29 апреля 2008 г. 14:09, спустя 23 минуты 7 секунд

    WHERE TO_DAYS( &#39;2008-04-29&#39; ) >= TO_DAYS( &#39;2008-04-28&#39; )

    ты наркоман?

    во-первых, дату превращаем в дни
    TO_DAYS(`date`)



    во-вторых там в мане написано про INTERVAL вроде так
    все умрут, а я изумруд
  • ghost

    Сообщения: ? Репутация: N Группа: Джедаи

    Spritz 29 апреля 2008 г. 14:36, спустя 27 минут 23 секунды


    Здесь не понятно почему …

    SELECT name, date_register
    FROM user
    WHERE TO_DAYS( &#39;2008-04-29&#39; ) >= TO_DAYS( &#39;2008-04-28&#39; )


    … возвращает 2008-04-30

    эммм.. поправьте меня если я ошибаюсь, но помоему условия типа WHERE 2>1 выполняются всегда…
  • pasha

    Сообщения: 1048 Репутация: N Группа: Адекваты

    Spritz 29 апреля 2008 г. 14:41, спустя 5 минут 5 секунд

    TO_DAYS(`date`)

    ну … 2008-04-29 получили 733526


    DATE_ADD(date,INTERVAL expr type)
    DATE_SUB(date,INTERVAL expr type)
    ADDDATE(date,INTERVAL expr type)
    SUBDATE(date,INTERVAL expr type)

    ты про это имеешь ввиду?
  • Ёлочник

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 29 апреля 2008 г. 21:00, спустя 6 часов 18 минут 52 секунды

    если известны обе даты, то:

    WHERE mydate = &#39;2008-04-28&#39; OR mydate = &#39;2008-04-29&#39;


    если только одна, то:

    WHERE mydate >= FROM_UNIXTIME(UNIX_TIMESTAMP(&#39;2008-05-28&#39;)-86400, &#39;%Y-%m-%d&#39;)
  • pasha

    Сообщения: 1048 Репутация: N Группа: Адекваты

    Spritz 30 апреля 2008 г. 7:38, спустя 10 часов 37 минут 46 секунд


    если известны обе даты, то:

    WHERE mydate = &#39;2008-04-28&#39; OR mydate = &#39;2008-04-29&#39;


    бред
  • sap

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 30 апреля 2008 г. 7:59, спустя 20 минут 36 секунд

    Я выборку по диапазону делал так:
    SELECT `something` FROM `tbl_name` WHERE `date` BETWEEN &quot;2008-04-28&quot; AND &quot;2008-06-23&quot;
  • Ёлочник

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 30 апреля 2008 г. 8:24, спустя 25 минут 19 секунд


    бред


    почему?
  • Ёлочник

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 30 апреля 2008 г. 8:33, спустя 8 минут 40 секунд

    сорри, зациклился на диапазоне в 1 день:


    по диапазону от 2008-04-28 по 2008-04-29


    Мой первый запрос работает только для 1-го дня.
    Мой второй запрос работает тоже для одного дня, но для любого количества дней, нужно 86400 умножить на требуемое количество дней.
  • pasha

    Сообщения: 1048 Репутация: N Группа: Адекваты

    Spritz 30 апреля 2008 г. 15:40, спустя 7 часов 7 минут 16 секунд

    sap, зачот (:

Пожалуйста, авторизуйтесь, чтобы написать комментарий!