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

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

  • pasha

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

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

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


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

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

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

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

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

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

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


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

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

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

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

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

    SELECT name, date_register
    FROM user
    WHERE TO_DAYS( '2008-04-29' ) >= TO_DAYS( '2008-04-28' )


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

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

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

    WHERE TO_DAYS( '2008-04-29' ) >= TO_DAYS( '2008-04-28' )

    ты наркоман?

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



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

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

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


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

    SELECT name, date_register
    FROM user
    WHERE TO_DAYS( '2008-04-29' ) >= TO_DAYS( '2008-04-28' )


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

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

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

    Spritz 29 апреля 2008 г. 22: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)

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

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

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

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

    WHERE mydate = '2008-04-28' OR mydate = '2008-04-29'


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

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

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

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


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

    WHERE mydate = '2008-04-28' OR mydate = '2008-04-29'


    бред
  • sap

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

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

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

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

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


    бред


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

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

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

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


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


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

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

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

    sap, зачот (:

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