За последние 24 часа нас посетили 17969 программистов и 1634 робота. Сейчас ищут 2077 программистов ...

Как склеить поля и обозвать их датой (временем) в запросе?

Тема в разделе "MySQL", создана пользователем vgd, 22 фев 2008.

  1. vgd

    vgd Активный пользователь

    С нами с:
    22 фев 2008
    Сообщения:
    3
    Симпатии:
    0
    Помогите корректно построить запрос!
    Есть БД, таблицa «focus»:
    day|month|year|hour|minute|tip
    02|12|2007|16|30|1
    03|12|2008|20|00|52
    04|09|2006|01|50|2
    05|11|2008|03|00|5
    06|12|2008|05|30|5
    07|07|2003|16|00|22
    08|12|2008|00|30|1
    09|12|2002|00|30|1
    10|10|2008|20|45|125
    04|11|2008|21|30|10
    12|05|2008|00|00|44
    13|12|2008|12|30|12
    06|12|2007|20|30|88
    15|11|2006|21|30|14


    Необходимо выбрать все «tip», у которых дата меньше или равна 06.12.2007 20:30!
    Хотелось бы это все реализовать одним запросом, может в запросе, собрать все поля(кроме tip) в дату, а после сравнивать? Как это сделать?
     
  2. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    А почему бы дату не хранить одним полем?
     
  3. vgd

    vgd Активный пользователь

    С нами с:
    22 фев 2008
    Сообщения:
    3
    Симпатии:
    0
    думал об этом, но слишком много скриптов нужно будет перебрать, да и сама база уже порядка 80 МБ!
     
  4. lexa

    lexa Активный пользователь

    С нами с:
    22 июл 2007
    Сообщения:
    1.746
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
  5. vgd

    vgd Активный пользователь

    С нами с:
    22 фев 2008
    Сообщения:
    3
    Симпатии:
    0
    concat() - рулит!
    а как теперь все обозвать датой и сравнить с now()?

    Пробывал так, но кажись это полный бред!
    select * from focus where STR_TO_DATE('Concat(hour,minute,0,month,day,year)', '%H%i%s%m%d%Y')<now()

    ПЛЗ, ХЕЛПППППП
     
  6. lexa

    lexa Активный пользователь

    С нами с:
    22 июл 2007
    Сообщения:
    1.746
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    Код (Text):
    1. concat(year, '-', month, '-', day, ' ', hour, ':', minute, ':', 0) < now()
    now() это ГГГГ-ММ-ДД ЧЧ:ММ:СС.

    Хотя я не совсем уверен, что результат сравнения будет корректным. Сравниваем строку с датой. Возможно, так будет лучше работать:
    Код (Text):
    1. now() > concat(year, '-', month, '-', day, ' ', hour, ':', minute, ':', 0)
    Ибо предпологается, что правая сторона примет тип левой. Но хз.

    Главное - пробовать.

    P.S. Или concat(year, '-', month, '-', day, ' ', hour, ':', minute, ':', '01').